2017-09-03 7 views
0

私のコードがtrueを返さない理由はわかりませんが、whileループは問題なく動作しますが、問題があります。ループが動作するはずですしながら、ここでPHP MySQLiからPDOへ?

$PDO_result = $db_PDO->prepare("SELECT * FROM nnm_anime INNER JOIN nnm_anime_info ON nnm_anime.a_id = nnm_anime_info.a_id WHERE a_name LIKE '?%' "); 
$PDO_result->bindParam(1, $pismenka[$i]); 
$PDO_result->execute(); 

は私がvar_dump()$PDO_result私は次のように、配列内の1つのアイテムを取得する場合:

while($row = $PDO_result->fetch(PDO::FETCH_ASSOC)) 

をしかし、それはしていません。

ワーキングMySQLiを:

$result = mysqli_query($connect_to_db, "SELECT * FROM nnm_anime INNER JOIN nnm_anime_info ON nnm_anime.a_id = nnm_anime_info.a_id WHERE a_name LIKE '$pismenka[$i]%' "); 

while($row = mysqli_fetch_array($result)) 
+0

は重複していません。Paramに入っていません。他にも問題があります。 –

答えて

2

fetchのみ1行(第一)

を取得しながら、最も簡単な解決策は、要求されたクエリに $pdo->fetch(PDO::FETCH_ASSOC) fetchAll

$pdo->fetchAll(PDO::FETCH_ASSOC)に戻り、すべての行を変更することであろう

例:

<?php 


try { 

    $PDO_result = $db_PDO->prepare("SELECT * FROM nnm_anime INNER JOIN nnm_anime_info ON nnm_anime.a_id = nnm_anime_info.a_id WHERE a_name LIKE ?"); 

    //Execute by inserting an array: 
    if (!$PDO_result->execute([$pismenka[$i] . "%" ])) { //Added ."%" 
     die('Error!'); 
    } 

    //Fetch rows: 
    $rows = $PDO_result->fetchAll(PDO::FETCH_ASSOC); 

    //Go trough each row: 
    foreach ($rows as $row) { 
     //Do something 
    } 

    //Catch exceptions thrown by PDO 
} catch (PDOException $ex) { 
    print_r($ex); 
} 
+0

フェッチは、PHP.netで説明されているように、 –

+0

私はそれについて100%は確信していませんが、この回答を見て、それはあなたの質問を思い出させます:https://stackoverflow.com/questions/19488364/how-to-properly-use-while-loop -in-pdo-fetchall 'fetchAll'を使うと、まったく使用する必要はありませんが、単純に1つの連想配列ですべて取得しますが、IMOは同じ仕事を行い、' fetchAll'は実際に何をしているのですか? –

+0

tryedでもまだ動作していませんforeach no run :( –

関連する問題