2017-01-15 6 views
0

Ich habe ein Problem mit meinem PHP-Skript Ich möchte die Daten innerhalb 'Name' aus meiner Datenbank ausgeben, aber es wird nicht funktionieren.PHP MySQLi Ausgabe Problem

Dies ist der Code:

$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "myDB"; 

$conn = new mysqli($servername, $username, $password, $dbname); 

if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$stmt = $conn->prepare("SELECT * FROM products WHERE id = ?"); 
$stmt->bind_param("s", $_GET['id']); 

$stmt->execute(); 

$result = mysqli_fetch_assoc($stmt); 

echo $result['name']; 

Der Fehler ist:

Warning: mysqli_fetch_assoc() erwartet 1 Parameter in C MySQLi_Result, Objekt gegeben werden: \ xampp \ htdocs \ p \ Warenkorb \ index.php on line 95

haben Sie eine Ahnung, was ich Hilfe tue falsch STARK

würde geschätzt 0

Danke in Advence

+0

Sie sollten Fehler anzeigen oder in das Server-Fehlerprotokoll suchen. Und Sie können mysqli einrichten, um Ausnahmen auszulösen, oder Sie können nach jedem mysqli-Aufruf nach Fehlern suchen. – jeroen

+0

Mein Fehler ist * Warnung: mysqli_fetch_assoc() erwartet Parameter 1 als mysqli_result, Objekt in C: \ xampp \ htdocs \ p \ cart \ index.php in Zeile 95 * –

Antwort

1

Verwenden Sie bind_result(). Nach $stmt->execute().

$stmt->bind_result($name); 

    while ($stmt->fetch()) { 
    echo "name: $name\n"; 
    } 

    $stmt->close(); 
2

A $stmt-execute() gibt ein mysql_stmt Objekt.

Ein mysqli_fetch_assoc() erwartet ein mysql_result Objekt als Parameter und kein mysql_stmt Objekt.

So mysqli_fetch_assoc() nach einer vorbereiteten und ausgeführten Abfrage verwenden Sie $stmt->get_result(); konvertieren die mysql_stmt Objekt in ein mysql_result Objekt wie dieses

$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "myDB"; 

$conn = new mysqli($servername, $username, $password, $dbname); 

if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$stmt = $conn->prepare("SELECT * FROM products WHERE id = ?"); 
$stmt->bind_param("s", $_GET['id']); 

$stmt->execute(); 

$result = mysqli_fetch_assoc($stmt);  
$row = $result->fetch_assoc(); 

echo $result['name']; 

Sie auch $stmt->bind_result($name); verwenden könnte aber zu tun, verwenden müssen, dass wir brauchen würden kennen Sie die Reihenfolge, in der die Spalten von Ihrer Abfrage zurückgegeben werden. Oder Sie müssen Ihre Abfrage spezifischer machen

$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "myDB"; 

$conn = new mysqli($servername, $username, $password, $dbname); 

if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$stmt = $conn->prepare("SELECT name FROM products WHERE id = ?"); 
$stmt->bind_param("s", $_GET['id']); 

$stmt->execute(); 

$stmt->bind_result($name); 
$stmt->fetch(); 

echo 'Name is ' . $name;