2017-05-09 2 views
1

Meine Frage ist:Was ist die korrekte Art, Ergebnisse zu drucken, die durch `SELECT *` mit mehreren `WHERE`-Klauseln in vorbereiteten Anweisungen mit` fetch_assoc() `in PHP-MYSQL gesetzt werden? unten

$query = 'SELECT * FROM `table_name` WHERE `uid` = ? AND `email` = ?'; 
$stmt_select = $conn->prepare($query); 
$stmt_select->bind_param('is', $user_id, $user_email); 
$user_id = $_SESSION['uid']; 
$user_email = $_SESSION['user_email']; 
$result = $stmt_select->execute(); 

I Ergebnisse einstellen fetch_assoc mit ausdrucken möchten, ist dies, weil ich zu bind_result() auf alle 23 Spalten nicht wollen, Name, ich habe es mit $row['column_name'] ausdrucken möchten, was ist der richtige Weg, um es zu erreichen?

Wenn Sie meinen Code sehen wollen, fragte ich eine andere Frage hier: How to SELECT * with multiple WHERE using fetch_assoc in prepared statements in PHP-MYSQL?

Aber es ist nicht richtig beantwortet hat, so stattdessen meinen Code zu korrigieren, können Sie mir sagen, was der beste Weg ist, zu erreichen, es?

+0

ich hoffe meine antwort half @ user7984467 – Akintunde007

Antwort

0

Ich hatte das gleiche Problem mit SELECT * in mysqli. Das Problem liegt beim bind_result Teil. Normalerweise müssten Sie viele Variablen hinzufügen. Das heißt, wenn Sie etwa 20 Spalten hätten, müssten Sie 20 Variablen in die bind_result-Anweisung aufnehmen.

Ich habe meine Lösung zugeschnitten, um Ihre Probleme zu beheben.

$query = 'SELECT * FROM `table_name` WHERE `uid` = ? AND `email` = ?'; 
    $stmt_select = $conn->prepare($query); 
    $stmt_select->bind_param('is', $user_id, $user_email); 
    $user_id = $_SESSION['uid']; 
    $user_email = $_SESSION['user_email']; 
    $result = $stmt_select->execute(); 
    $stmt_select->store_result();//after this line we can output the number of rows if you need to check that as well 
    $number_of_rows = $stmt_select->num_rows; 
    $meta = $stmt_select ->result_metadata(); 
    $parameters = array(); 
    $results = array(); 
    while ($field = $meta->fetch_field()) { 
     $parameters[] = &$row[$field->name]; 
    } 
    call_user_func_array(array($stmt_select , 'bind_result'), $parameters); 
     while ($stmt_select ->fetch()) { 
      foreach ($row as $key => $val) { 
        $x[$key] = $val; //here we get the key => value (Column => Value) 
         } 
         $results[] = $x; //lets grab everything here 
        } 
print_r($results); 
+0

Das funktioniert wie erwartet !! Wünsche dir viel Glück mit all deinen zukünftigen Projekten! – user7984467

+0

danke !. Du auch @ user7984467. Glückliche Kodierung – Akintunde007

Verwandte Themen