2016-06-01 9 views
0

Es tritt gerade ein Problem auf, wenn wir versuchen, den Benutzernamen aus einer SQL-Datenbank abzurufen. Dies ist unser Code für die Abfrage und die fetch_object()Schwerwiegender Fehler: Uncaught Error: Aufruf einer Memberfunktion fetch_object() für die Zeichenfolge

<?php 

$user = 'root'; 
$password = 'root'; 
$db = 'collabowrite'; 
$host = 'localhost'; 
$port = 3306; 
$conn = new mysqli($host, $user, $password, $db); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
// $link = mysqli_init(); 
// $success = mysqli_real_connect(
// $link, 
// $host, 
// $user, 
// $password, 
// $db, 
// $port 
//); 

//$sql='SELECT * FROM users WHERE username ='.$_GET['username']; 



$result = $conn->query('SELECT * FROM users WHERE username ="'.$_POST['username']).'"'; 
if(!$result){ 
    die($conn->error); 
} 
$userids = array(); 

while ($row = $result->fetch_object()){ 
    $userids[] = $row->id; 
} 


echo $userids[0]; 

$conn->close(); 

?> 

Wenn wir führen dies wir den Fehler:

Fatal error: Uncaught Error: Call to a member function fetch_object() on string in /Users/brianleaf/Google Drive/htdocs/login.php:34 Stack trace: #0 {main} thrown in /Users/brianleaf/Google Drive/htdocs/login.php on line 34 

Wir sind neu in PHP, so wäre jede Hilfe dankbar.

+0

'$ result = $ conn-> query ('SELECT * FROM users WHERE username =;' Any "' $ _ POST [ 'username'].). '"' Warum wird das '' 'bis zum Ende verkettet? Der Grund, warum Sie diesen Fehler treffen, ist selbsterklärend:' $ result' ist eine Zeichenkette – ShaneOH

+0

@ShaneOH Wenn wir es nicht in "" setzen, denkt es das es ist eine Spalte und kein Wert. –

+0

U muss den Fehler für Ihre Abfrage überprüfen 'if (! $ result) sterben ($ mysql-> error);' – devpro

Antwort

1

Es sieht so aus, als hätten Sie das Zitat auf der Außenseite des letzten ) auf der Linie 34 statt auf der Innenseite.

Versuchen, zum Beispiel:

$sql='SELECT * FROM users WHERE username ="'.$_POST['username'].'"'; 
$result = $conn->query($sql); 

oder

$result = $conn->query('SELECT * FROM users WHERE username ="'.$_POST['username'].'"');

+0

Danke für die Hilfe! –

+1

Ton gut ..... ABER OFFEN FÜR SQL-INJEKTION – devpro

1

Sie haben eine Zeichenfolge erstellt. Dies ist so, wie es sein sollte:

$result = $conn->query('SELECT * FROM users WHERE username="' . $_POST['username'] . '"');