2016-04-16 12 views
0

PHPで正しい値を返さないMySqlクエリがありますが、同じMySqlクエリをphpMyAdminで実行すると値が返されます。 Webブラウザにselectを表示すると、最後に「Resource id#27」が表示されます。PHPで内部結合が機能していませんが、phpMyAdmin SQLで動作しています

PHPコード

$SQL_PhotoQueryList = "SELECT count(*) FROM `invoice_detail`". 
         " INNER JOIN `photos` ON invoice_detail.photo_id = photos.photo_id". 
         " INNER JOIN `invoice` ON invoice_detail.invoice_id = invoice.invoice_id". 
         " WHERE invoice.invoice_active = '$PassStatus' AND photos.user_id = '$SessionUserID'". 
$SQL_PhotoResultList = mysql_query($SQL_PhotoQueryList);  
$ListPhotoCount  = mysql_result($SQL_PhotoResultList,0); 
echo "SQL Query = $SQL_PhotoQueryList<br>"; 
echo "ListCount = $ListPhotoCount<br>"; 

画面出力ルーチンを呼び出す

SQL Query = SELECT count(*) FROM `invoice_detail` INNER JOIN `photos` ON invoice_detail.photo_id = photos.photo_id INNER JOIN `invoice` ON invoice_detail.invoice_id = invoice.invoice_id WHERE invoice.invoice_active = '2' AND photos.user_id = '2'Resource id #27 
ListCount = 0 

コード($ SessionUserIDは$ _SESSION変数である)

$PassStatus = "2"; // Active 
    require("get_invoice.php"); 
    $InfoTotalSales = $ListGalleryCount; 
+0

[mysqli](http://php.net/manual/en/book.mysqli.php)または[pdo](http://php.net/manual/en/ref.pdo)を使用することをお勧めします。 -mysql.php)を使用します。しかし、私はこれらのことが時々どのようになっているかを知っています... さらに、$変数参照をクエリに入れることは注入を求めています。 変数をクエリ文字列から切り離した場合、そのうちのいくつかが定義されていないことがあります。 – tenCupMaximum

+0

$変数は、呼び出しプロセスではすべて渡され、変数は入力されません。 –

+2

ここでドットをセミコロンに置き換えてください。 '' $ SessionUserID '"。' – Rocki

答えて

1

あなたがタイプミスを持っているように見えます。

$SQL_PhotoQueryList = "SELECT count(*) FROM `invoice_detail`". 
         " INNER JOIN `photos` ON invoice_detail.photo_id = photos.photo_id". 
         " INNER JOIN `invoice` ON invoice_detail.invoice_id = invoice.invoice_id". 
         " WHERE invoice.invoice_active = '$PassStatus' AND photos.user_id = '$SessionUserID'". 
$SQL_PhotoResultList = mysql_query($SQL_PhotoQueryList);  
$ListPhotoCount  = mysql_result($SQL_PhotoResultList,0); 
echo "SQL Query = $SQL_PhotoQueryList<br>"; 
echo "ListCount = $ListPhotoCount<br>"; 

注クエリの最後の行にピリオド(実際には、連結演算子):

     " WHERE invoice.invoice_active = '$PassStatus' AND photos.user_id = '$SessionUserID'". 

これは、セミコロンでなければなりません。うん、私もそれをやった。時には見つけるのが最も難しい間違いです。

最後のリソースIDは、mysql_query()の結果です。

関連する問題