2017-07-21 21 views
3

を使用してデータを照会する場合:私は実行して、照会を保存する場合fetch_arrayエラー、私はこのようなSQLクエリを作成しようとmysqli_query

Fatal error: Call to a member function fetch_array() on null in

$sql2 = mysqli_query($connection,"SELECT * FROM CHILD_IMG WHERE PROD_ID='$delID'") or die(mysqli_error()); 
$getQuery = $connection->query($sql2); 
while($row = $getQuery->fetch_array()){ 
    $childID = $row['ID']; 
    $parentID = $row['PROD_ID']; 
    $childName = '../ProductImages/ChildImages/'.$parentID . "_".$childID.".jpg"; 
    unlink($childName); 
} 

私は次のエラーを取得します$sqlは次のようになります。

$sql2 = ("SELECT * FROM CHILD_IMG WHERE PROD_ID = '$delID'") or die(mysqli_error()); 
$getQuery = $connection->query($sql2); 
while($row = $getQuery->fetch_array()){ 
    $childID = $row['ID']; 
    $parentID = $row['PROD_ID']; 
    $childName = '../ProductImages/ChildImages/'.$parentID . "_".$childID.".jpg"; 
    unlink($childName); 
} 

クエリは問題なくスムーズに実行されます。

なぜ最初のオプションが機能しないのですか?

+1

あなたは手続き的アプローチでオブジェクト指向アプローチを混在させています。しないでください –

+0

あなたのクエリは正しく$ SQL2 = "SELECT * FROM CHILD_IMG WHERE PROD_ID = '$ delID'"の代わりに '$ sql2 =" SELECT * FROM CHILD_IMG WHERE PROD_ID = '$ delID' )またはdie(mysqli_error()); ' –

答えて

6

このコードを見ますか?

$sql2 = mysqli_query($connection,"SELECT * FROM CHILD_IMG WHERE PROD_ID='$delID'") or die(mysqli_error()); 
     ^^^^^^^^^^^^ 
$getQuery = $connection->query($sql2); 
         ^^^^^ 

実際には2回クエリしているため、エラーが発生しています。

さらに、or die(mysqli_error())はの後にに属し、引数としてdb接続が必要です。

I:or die(mysqli_error($connection))

だからあなたは、クエリが失敗したかどうかを確認するには、次の操作を行いたい:

if(!$getQuery){ 

    echo "Error: " . die(mysqli_error($connection)); 

} 

書き換え:あなたはまた、SQLインジェクションに開いている

$sql2 = "SELECT * FROM CHILD_IMG WHERE PROD_ID='$delID'"; 
$getQuery = $connection->query($sql2); 
while($row = $getQuery->fetch_array()){ 
    $childID = $row['ID']; 
    $parentID = $row['PROD_ID']; 
    $childName = '../ProductImages/ChildImages/'.$parentID . "_".$childID.".jpg"; 
    unlink($childName); 
} 

。準備されたステートメントを使用してください。

参考文献:

注:PDOと一緒に行くに予定がある場合は、別のMySQLを混在させないようにしてくださいAPI。

+0

ああそうです。だからもし私が最初のオプションを働かせたいなら、私は$ getQuery = $ connection($ sql2);する必要があります; –

+0

詳しい説明+ 1.ソリューションを追加します。あなたは原因を教えてくれるが、解決策を加えなかった。 –

+0

@ルークDSうまくいったようにする。 –

関連する問題