View Full Version : سوال: خطای Fatal error: Call to a member function fetch() on a non-object
mirzajavad
چهارشنبه 16 مهر 1393, 22:47 عصر
کجای این کد اشتباهه که اینجور اروری میده ؟
if (isset($_POST['search']) AND !empty($_POST['search'])) {
$search = $_POST['search'];
$query = $pdo -> prepare("SELECT * FROM `users` WHERE `fname` LIKE :search OR `lname` LIKE :search");
$result = $query->execute(array(
':search' => '%' . $search . '%'
));
$rows = $result->fetch();
foreach ($rows as $res) {
echo $res['fname'];
echo '<br>';
echo $res['lname'];
}
}
DR.HTML
پنج شنبه 17 مهر 1393, 00:21 صبح
کلا استفاده از Fetchall بهتر از Fecth ضمنن چرا از bind_param اسفتاده نمیکنین ؟ ':search' => '%' . $search . '%'
درصدها رو چرا توی کوئری اصلی نمیزارید ؟
mirzajavad
پنج شنبه 17 مهر 1393, 00:52 صبح
الان مشکل این خطا هستش آخه من همه نکاتی رو که گفتین اجرا کردم ولی بازم همین خطا رو میده
MMSHFE
پنج شنبه 17 مهر 1393, 13:55 عصر
شئ pdo$ ساخته نشده یا کوئری خطا داشته. دقت کنید قبلش اتصال به دیتابیس به درستی برقرار شده باشه یا result$ مقدار false نداشته باشه.
saeed-71
پنج شنبه 17 مهر 1393, 13:59 عصر
اینجوری استفاده کن
if (isset($_POST['search']) AND !empty($_POST['search'])) {
$search = $_POST['search'];
$query = $pdo -> prepare("SELECT * FROM `users` WHERE `fname` LIKE :search OR `lname` LIKE :search");
$result = $query->execute(array(
':search' => '%' . $search . '%'
));
//$rows = $result->fetch();
foreach ($result as $res) {
echo $res['fname'];
echo '';
echo $res['lname'];
}
}
mirzajavad
پنج شنبه 17 مهر 1393, 16:28 عصر
غسضم
شئ pdo$ ساخته نشده یا کوئری خطا داشته. دقت کنید قبلش اتصال به دیتابیس به درستی برقرار شده باشه یا result$ مقدار false نداشته باشه.
شی pdo$ ساخته شده و کوئری رو هم بررسی میکنم به خطایی نرسیدم چون تغییرش دادم و با mysql تست کردم جواب میده مقدار result$ هم true هستش
mirzajavad
پنج شنبه 17 مهر 1393, 16:30 عصر
اینجوری استفاده کن
if (isset($_POST['search']) AND !empty($_POST['search'])) {
$search = $_POST['search'];
$query = $pdo -> prepare("SELECT * FROM `users` WHERE `fname` LIKE :search OR `lname` LIKE :search");
$result = $query->execute(array(
':search' => '%' . $search . '%'
));
//$rows = $result->fetch();
foreach ($result as $res) {
echo $res['fname'];
echo '';
echo $res['lname'];
}
}
اینجوری بدون fetch کردن مگر میشه از foreach استفاده کرد ؟
MMSHFE
پنج شنبه 17 مهر 1393, 16:33 عصر
مشکل مشخص شد! دوست عزیز true یا false که شئ نیستن که متد روشون صدا بزنید. شما باید $query->fetch() رو بکار ببرین. از خروجی execute فقط برای چک کردن اینکه کوئری اجرا شده یا نه باید استفاده کنید.
mirzajavad
پنج شنبه 17 مهر 1393, 17:45 عصر
آهان متوجه شدم چون حواسم نبود مقدار result$ از نوع boolean هستش
saeed-71
پنج شنبه 17 مهر 1393, 18:33 عصر
اینجوری بدون fetch کردن مگر میشه از foreach استفاده کرد ؟
بله میشه اگه بخوای اثباتم میکنم :لبخند:
if (isset($_POST['search']) AND !empty($_POST['search'])) { $search = $_POST['search']; $query = $pdo -> prepare("SELECT * FROM `users` WHERE `fname` LIKE :search OR `lname` LIKE :search"); $result = $query->execute(array( ':search' => '%' . $search . '%' )); //$rows = $result->fetch(); foreach ($result as $res) { echo $res['fname']; echo ''; echo $res['lname']; }}
mirzajavad
پنج شنبه 17 مهر 1393, 19:35 عصر
بله میشه اگه بخوای اثباتم میکنم :لبخند:
if (isset($_POST['search']) AND !empty($_POST['search'])) { $search = $_POST['search']; $query = $pdo -> prepare("SELECT * FROM `users` WHERE `fname` LIKE :search OR `lname` LIKE :search"); $result = $query->execute(array( ':search' => '%' . $search . '%' )); //$rows = $result->fetch(); foreach ($result as $res) { echo $res['fname']; echo ''; echo $res['lname']; }}
نمیشه :لبخند:
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.