fetchAll بکنید خروجی را بررسی کنید.
fetchAll بکنید خروجی را بررسی کنید.
این اررور رو میده کدتونو که کپی کردم :
Fatal error: Call to a member function fetchAll() on boolean in
اشتباه از من بود، امتحان کنید :
کد:<?php if(isset($_GET['id']) && !empty($_GET['id'])){ $id=(int) $_GET['id']; $result2=$config->connect->prepare("SELECT db_user_user.id,db_user_author.id,db_user_admin.id FROM db_user_user,db_user_author,db_user_admin WHERE db_user_user.id=? OR db_user_author.id=? OR db_user_admin.id=?"); $result2->bindValue(1,$id); $result2->bindValue(2,$id); $result2->bindValue(3,$id); $result2->execute(); $result = $result2->fetchAll(); print_r($result); // if($result2->execute()){ // $count=$result2->rowCount(); // echo $count; // if($count===1){ // $rows=$result2->fetch(PDO::FETCH_ASSOC); // $user_edit->edit(); // } // else{ // header('location: user-user.php'); // exit(); // } // } // else{ // header('location: user-user.php'); // exit(); // } // } // else{ // header('location: user-user.php'); // exit(); // }
به جای
بنویسیدکد:SELECT db_user_user.id,db_user_author.id,db_user_admin.id FROM db_user_user,db_user_author,db_user_admin WHERE db_user_user.id=? OR db_user_author.id=? OR db_user_admin.id=?
البته union کردن خیلی راحتتر از اینهکد:SELECT db_user_user.id _user_id,db_user_author.id _author_id,db_user_admin.id _admin_id FROM db_user_user,db_user_author,db_user_admin WHERE db_user_user.id=? OR db_user_author.id=? OR db_user_admin.id=?
بازم تعداد نادرست میده :
کد PHP:
if(isset($_GET['id']) && !empty($_GET['id'])){
$id=(int) $_GET['id'];
$result2=$config->connect->prepare("SELECT db_user_user.id _user_id,db_user_author.id _author_id,db_user_admin.id _admin_id FROM db_user_user,db_user_author,db_user_admin WHERE db_user_user.id=? OR db_user_author.id=? OR db_user_admin.id=?");
$result2->bindValue(1,$id);
$result2->bindValue(2,$id);
$result2->bindValue(3,$id);
if($result2->execute()){
$count=array();
$count=$result2->rowCount();
echo $count;
if($count===1){
$rows=$result2->fetch(PDO::FETCH_ASSOC);
$user_edit->edit();
}
else{
echo 'ss';
}
}
else{
header('location: user-user.php');
exit();
}
}
else{
header('location: user-user.php');
exit();
}
چون or استفاده کردید اگر در این سه تیبیل db_user_user.id,db_user_author.id,db_user_admin.id حداقل آیدی وارد شده وجود داشته باشد یک ردیف برمی گردوند و حساب میکند، پس اگر در سه تیبیل id هر رکوردی با مقدار $_GET برابر باشد یه row داریم، حالا بالا 11 تا row پیدا کرده که حداقل یکی از db_user_user.id,db_user_author.id,db_user_admin.id اینا با مقدار $_GET برابر است، بازم چون من استراکچر دیتابیس شما را ندیدم بیشتر نمیتونم راهنمایی کنم باید ساختار دیتابیس همراه با رکورد ها را ببینیم یا عکس بگیرید قرار دهید اگر فکر میکنید اشتباه است.
حالا این روش union که دوستان گفتند چطور باید ازش استفاده کرد ؟
نمونه کدی برای استفاده ازش هست؟
ممنون از دوستان بابت پاسخاتون
کد:<?php if(isset($_GET['id']) && !empty($_GET['id'])){ $id=(int) $_GET['id']; $result2=$config->connect->prepare("Select id From db_user_user Where id=? Union Select id From db_user_author Where id=? Union Select id From db_user_admin Where id=?"); $result2->bindValue(1,$id); $result2->bindValue(2,$id); $result2->bindValue(3,$id); if($result2->execute()){ $count=array(); $count=$result2->rowCount(); echo $count; if($count===1){ $rows=$result2->fetch(PDO::FETCH_ASSOC); $user_edit->edit(); } else{ echo 'ss'; } } else{ header('location: user-user.php'); exit(); } } else{ header('location: user-user.php'); exit(); }
در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)