میخوام یک id رو بین 3 جدول جستجو کنم که ببینم همچین id تو یکی از این جدول ها حداقل هست یا نه .
دستور کوئری mysql چی هست ؟
ممنون بابت پاسختون
نمایش نسخه قابل چاپ
میخوام یک id رو بین 3 جدول جستجو کنم که ببینم همچین id تو یکی از این جدول ها حداقل هست یا نه .
دستور کوئری mysql چی هست ؟
ممنون بابت پاسختون
سلام
حتما یک کوئری میخواید باشه ؟
میتونید در قسمت from با استفاده از union نتایج رو جمع کنید
یا سه تا EXISTS استفاده کنید.
کد:SELECT table1.id,table2.id,table3.id FROM table1,table2,table3 WHERE table1.id = 1 AND table2.id = 1 AND table3.id = 1
این کد من هست . QUERY که گفتید رو زدم ولی اصلا EXECUTE نشد .کد PHP:
$id=(int) $_GET['id'];
$result2=$config->connect->prepare("SELECT `id`,`id`,`id` FROM `db_user_user`,`db_user_author`,`db_user_admin` WHERE `id`=? AND `id`=? AND `id`=?");
$result2->bindValue(1,$id);
$result2->bindValue(2,$id);
$result2->bindValue(3,$id);
if($result2->execute()){
$count=$result2->rowCount();
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();
}
SELECT db_user_user.id, db_user_author.id,db_user_admin.id
اره دمشون گرم .
- - - Updated - - -
اینو زدم . کار میکنه ولی برای مثال من این لینک رو میزنم : user-edit.php?id=5کد 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);
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();
}
اگر توجه کنید من این echo $count; رو داخل کد های بالا نوشتم تا تعداد record ها با توجه به id رو بدونم .
من یک record با id=5 در هز 3 جدول دارم . اما 18 مینویسه .
اعداد دیگه رو تست کردم مشکل مقدار گیری داره .
به نظرتون مشکل از کجاست ؟ مشکل از گرفتن تعداد آرایه هست :
کد PHP:
$count=$result2->rowCount();
fetchAll بکنید خروجی را بررسی کنید.
کد:<?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);
$ss = $result2->execute();
$result = $ss->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();
// }
این اررور رو میده کدتونو که کپی کردم :
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();
// }
اینم خروجیشه :
کد PHP:
Array
(
[0] => Array
(
[id] => 1
[0] => 5
[1] => 2
[2] => 1
)
[1] => Array
(
[id] => 1
[0] => 5
[1] => 3
[2] => 1
)
[2] => Array
(
[id] => 1
[0] => 5
[1] => 4
[2] => 1
)
[3] => Array
(
[id] => 2
[0] => 5
[1] => 2
[2] => 2
)
[4] => Array
(
[id] => 2
[0] => 5
[1] => 3
[2] => 2
)
[5] => Array
(
[id] => 2
[0] => 5
[1] => 4
[2] => 2
)
[6] => Array
(
[id] => 3
[0] => 5
[1] => 2
[2] => 3
)
[7] => Array
(
[id] => 3
[0] => 5
[1] => 3
[2] => 3
)
[8] => Array
(
[id] => 3
[0] => 5
[1] => 4
[2] => 3
)
[9] => Array
(
[id] => 4
[0] => 5
[1] => 2
[2] => 4
)
[10] => Array
(
[id] => 4
[0] => 5
[1] => 3
[2] => 4
)
[11] => Array
(
[id] => 4
[0] => 5
[1] => 4
[2] => 4
)
)
به جای
بنویسیدکد: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();
}