2012-04-01 17 views
1

Ich habe eine MySQL-Tabelle namens Benutzer. Die Reihen haben 4 Felder und wie folgt aussehen:ID aus der Tabelle auswählen wo name =? ... Abfrage schlägt fehl

INT(10) | serialized php array | CHAR(24) | CHAR(254) 
    id  | profile    | name  | email 
    1  | ..ybl4JFtmhQEQVwQOXjo... | TestName | [email protected] 
    2  | ..hd+F2yZVYPlxmyalrQo... | NameTest | [email protected] 

ich einen Namen eines Benutzers haben (Testname) und wollen die eindeutige Benutzer-ID erhalten (1). Warum funktioniert folgender Code nicht?

function dataBase() { 
    $dataBase = @new MySQLi("localhost", "name", "password", "databasename"); 
    if (mysqli_connect_errno()) { 
     safeExit("Failed to establish connection to MySQL database, error: ".mysqli_connect_error(), 'msgError'); 
    } else { 
     return $dataBase; 
    } 
} 

// connect to database 
$db = dataBase(); 

$sql = 'SELECT 
      id 
     FROM 
      Users 
     WHERE 
      name = ? 
     LIMIT 
      1'; 
$stmt = $db->prepare($sql); 
if (!$stmt) { 
    safeExit($db->error, 'msgError'); 
} 

$name = 'TestName'; 

$stmt->bind_param('s', $name); 
if (!$stmt->execute()) { 
    safeExit($stmt->error, 'msgError'); 
} 
    $stmt->bind_result($uid); 
    $stmt->close(); 
echo $uid; 

Dieser Code gibt ein null0 aus. Ich kann Syntaxfehler ausschließen. Bei der Abfrage muss etwas nicht stimmen.

Antwort

0

Sie haben die Zeile nicht von $stmt abgerufen. Schauen Sie sich die Beispiele auf der mysqli::bind_result() documentation an, um zu sehen, wie dies normalerweise mit einem Anruf an $stmt->fetch() entweder einzeln bei der Erwartung einer Zeile oder in einer while Schleife erfolgt.

$stmt->bind_param('s', $name); 
if (!$stmt->execute()) { 
    safeExit($stmt->error, 'msgError'); 
} 

$stmt->bind_result($uid); 

// Fetch the row so it populates the result variable 
$stmt->fetch(); 
echo $uid; 

$stmt->close(); 
+0

Danke. Das hat geholfen. – u7f1mrfpf

Verwandte Themen