2017-09-03 2 views
0

Ich weiß nicht, warum mein Code nicht true zurückgibt, die While-Schleife funktioniert gut, aber es gibt ein Problem.PHP MySQL zu 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(); 

hier, wenn ich var_dump()$PDO_result ich ein Element in einem Array, so dass die folgenden while-Schleife funktionieren soll:

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

aber es funktioniert nicht.

Arbeits 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

nicht duplicate% kann nicht in Param sein ...., ich habe andere Probleme dann er –

Antwort

2

Die einfachste Lösung wäre $pdo->fetch(PDO::FETCH_ASSOC) zu $pdo->fetchAll(PDO::FETCH_ASSOC)

fetchAll kehrt in der gewünschten Abfrage alle Zeilen zu ändern, während fetch bekommt nur 1 Zeile (die erste)

Beispiel:

<?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

holen sollte 1. Zeile dann 2. dann 3rd ..... wie beschrieben in PHP.net oder nicht? –

+0

Ich bin nicht 100% sicher, aber werfen Sie einen Blick auf diese Antwort, es erinnert mich irgendwie an Ihre Frage: https://stackoverflow.com/questions/19488364/how-to-properly-use-while-loop -in-pdo-fetchall Aber mit 'fetchAll' müssen Sie überhaupt nicht verwenden, Sie bekommen es einfach in einem assoziativen Array, aber IMO macht es den gleichen Job, und' fetchAll' ist klarer im Kontext von was Sie tatsächlich tun –

+0

tryed, aber immer noch keine funktioniert foreach kein Lauf :( –