PDA

View Full Version : سوال: مشكل اين كوئري چيه؟



numberone1
یک شنبه 14 اسفند 1390, 13:30 عصر
سلام اين كد من هست ميخوام ببينم مشكلش چيه؟


if((!empty($name)) AND (!empty($id))){
$query1 = ("SELECT * FROM `trades` where `app` = '1' AND `nshoghl` = '$rows[id]' AND `shoghl` = '$id' ");
}else{$query1 = ("SELECT * FROM `trades` where `app` = '1' AND `nshoghl` = '$rows[id]' ");
$query = $query1;}
$query2 = mysql_query("$query1")or die(mysql_error());
if (mysql_num_rows($query2) > 0 ){
$total_pages = mysql_num_rows($query2);

$query2 = mysql_query($query . "ORDER BY `percent` DESC , `uptodate` DESC LIMIT '$start', '$limit' ")or die('error injast' . mysql_error());


ارور ميده


Warning: Wrong parameter count for mysql_query() in

plague
یک شنبه 14 اسفند 1390, 13:49 عصر
قبل از اینکه sql رو اجرا کنی یه اکو ساده ازش بگیر ببین کد sql که اجرا میشه چیه

numberone1
یک شنبه 14 اسفند 1390, 13:58 عصر
دقيقا همون كوئري هائي كه اينجا نوشتم چاپ ميشه
تمام value ها هم درسته
حالا مشكلم اينه كه اگر 6 سطر بايد چاپ بشه فقط از وسط اون 6 تا يكيش چاپ ميشه !!!!
خيلي عجيبه
انگار دلبخواه از ديتابيس مقاديري رو انتخاب ميكنه و نمايش ميده
از توي php myadmin كه مستقيم كوئري ميگيرم درست جواب و نشون ميده

امیـرحسین
یک شنبه 14 اسفند 1390, 14:39 عصر
شما کوٍئری رو داری تو else میسازی خب وقتی else اجرا نشه که query$ ساخته نمیشه...

numberone1
یک شنبه 14 اسفند 1390, 18:35 عصر
شما کوٍئری رو داری تو else میسازی خب وقتی else اجرا نشه که query$ ساخته نمیشه...
در هر صورت يا if اجرا ميشه يا else ديگه و توي هر كدوم هم يك كوئري ساخته ميشه ولي وقتي كوئري اجرا ميشه جواب ناقص چاپ ميشه
مثلا اگر 6 سطر از تيبل حاصل كوئري باشه فقط يكي رو بر ميگردونه . اين كوئري رو پرينت كردم دقيقا هميني هست كه توي سورس قرار دادم و مد نظرم هست و وقتي توي phpmyadmin هم اجراش ميكنم تمام 6 سطر و بصورت كامل برميگردونه ولي توي صفحه نميدونم چرا ناقص جوابو مياره!!!!!!!!
خيلي عجيبه


while($row = mysql_fetch_array($query2)){

Reza1607
یک شنبه 14 اسفند 1390, 18:46 عصر
خوب دوست عزيز خط آخر داخل پرانتز die شما تنها از دستور mysql_query استفاده كردين و بهش هيچ پارامتري ندادين به همين خاطر اون هشدار رو مي ده

numberone1
یک شنبه 14 اسفند 1390, 18:53 عصر
خوب دوست عزيز خط آخر داخل پرانتز die شما تنها از دستور mysql_query استفاده كردين و بهش هيچ پارامتري ندادين به همين خاطر اون هشدار رو مي ده
يعني چه دستوري بايد بهش ميدادم؟
كوئري نصفش توي $query هست بقيش هم جلوي اون نوشته شده
ديگه چه دستوري بايد بهش اضافه بشه؟

Reza1607
یک شنبه 14 اسفند 1390, 18:57 عصر
نه منظور من اون دستور انتها خط هست
به جاي mysql_query انتها بايد از mysql_error استفاده كني

به نظرم شما كد رو ناقص گذاشتيد اگه امكانش هست ادامه كد رو هم بزاريد تا بشه شما رو بهتر راهنمايي كرد يا اين كه يك توضيح درمورد كاري كه مي خواين انجام بدين بنويسيد تا بدونيم اين كوئري براي چه كاري هستش

numberone1
یک شنبه 14 اسفند 1390, 18:58 عصر
ببخشيد اون اشتباه لپي بود برطرف شد
مشكل از اون نبود
مشكل اينه كه كوئري درست اجرا ميشه و وقتي كه كوئري رو پرينت هم ميگيرم همون چيزي چاپ ميشه كه مد نظرمه ولي هنگام گرفتن خروجي بجاي چاپ 6 سطر تيبل(به عنوان جواب كوئري) فقط يك سطر و از وسط اون 6 تا ميخونه و چاپ ميكنه!!!

numberone1
یک شنبه 14 اسفند 1390, 19:00 عصر
اينم كد كامل



if((!empty($name)) AND (!empty($id))){
$query1 = ("SELECT * FROM `trades` where `app` = '1' AND `nshoghl` = '$rows[id]' AND `shoghl` = '$id' ");
//echo $query1;
}else{$query1 = ("SELECT * FROM `trades` where `app` = '1' AND `nshoghl` = '$rows[id]' ");
//echo $query1;
}
$query2 = mysql_query("$query1")or die(mysql_error());
if (mysql_num_rows($query2) > 0 ){
$total_pages = mysql_num_rows($query2);

$query2 = ($query1 . "ORDER BY `percent` DESC , `uptodate` DESC LIMIT $start, $limit ");
//echo $query2;
$query2 = mysql_query($query2);
$total_pages = mysql_num_rows($query2);
$count = mysql_fetch_array($query2);

while($row = mysql_fetch_array($query2)){
$query2 = mysql_query("SELECT * FROM `images` where `cor_id` = '$row[id]' ORDER BY `id` ASC LIMIT 1")or die(mysql_query());
$row1 = mysql_fetch_array($query2);
if($row['manager'] == ""){$row['manager'] = "-";}
if($row['mobile'] == ""){$row['mobile'] = "-";}
if($row['tel'] == ""){$row['tel'] = "-";}
if($row['site'] == ""){$row['site'] = "-";}
if($row['email'] == ""){$row['email'] = "-";}

}

Reza1607
یک شنبه 14 اسفند 1390, 19:13 عصر
من كدتون رو به اين صورت اصلاح كردم



if((!empty($name)) AND (!empty($id)))
{
$query = ("SELECT * FROM `trades` where `app` = '1' AND `nshoghl` = '$rows[id]' AND `shoghl` = '$id' ");
}
else
{
$query = ("SELECT * FROM `trades` where `app` = '1' AND `nshoghl` = '$rows[id]' ");
}
$result = mysql_query($query)or die(mysql_error());
if (mysql_num_rows($result) > 0 ){
$total_pages = mysql_num_rows($result);

$query2 = $query . "ORDER BY `percent` DESC , `uptodate` DESC LIMIT $start, $limit ";
$result2 = mysql_query($query2);
$total_pages = mysql_num_rows($result2);
$count = mysql_fetch_array($result2);
while($row = mysql_fetch_array($result2)){
$result3 = mysql_query("SELECT * FROM `images` where `cor_id` = '$row[id]' ORDER BY `id` ASC LIMIT 1")or die(mysql_error());
//مطمئن هستيد كه مي خواين تنها يك ركورد رو بگيريد ( منظورم استفاده از limit تو دستور بالاست)
$row1 = mysql_fetch_array($result3);
if($row['manager'] == ""){$row['manager'] = "-";}
if($row['mobile'] == ""){$row['mobile'] = "-";}
if($row['tel'] == ""){$row['tel'] = "-";}
if($row['site'] == ""){$row['site'] = "-";}
if($row['email'] == ""){$row['email'] = "-";}
}