2016-04-10 6 views
1

Ich habe in anderen Fragen gesucht, aber das scheint etwas falsch mit meinem eigenen Code und ich war nicht in der Lage, das Problem von mir selbst zu identifizieren.mysqli select ID Rückgabe 0 (Arbeit an der Datenbank)

Ich habe die folgende Abfrage ausgeführt wird erfolgreich und Rückführen der Spalte id ich um:

SELECT city_id FROM location_city WHERE c_name = 'cityname' 

Allerdings, wenn ich meine Funktion zu überprüfen, ob Stadt existiert bekomme ich immer eine 0 egal welche bestehende Stadt ich gehe als Parameter:

// check if city already exists 
public function is_city($city) { 

    $mysqli = $this->aet->getAetSql(); 

    if ($stmt = $mysqli->prepare('SELECT city_id FROM location_city WHERE c_name = ?')) { 
     $stmt->bind_param('s', $city); 
     $stmt->execute(); 
     $stmt->store_result(); 
     $stmt->num_rows === 1 ? $stmt->bind_result($city) : $city = FALSE; 
    } 

    return $city; 
} 

ich habe einige Tests getan:

$city = 'Elche'; 
echo $functions->is_city($city); 
if (FALSE !== $functions->is_city($city)) echo 'NOT FALSE'; else echo 'FALSE'; 

// 0 
// NOT FALSE 

Ich habe auch überprüft $stmt->execute() und es gibt TRUE, keine Fehler (echo $stmt->error;)

Ich habe auch eine andere Funktion, die die Stadt Liste generiert und das funktioniert ok. Der einzige Unterschied ist, dass ich weder $stmt->store_result(); noch $stmt->num_rows verwende. Ich habe versucht, diese beiden in is_city() kommentieren, aber immer noch nicht funktioniert.

Irgendwelche Ideen? Vielen Dank!

Antwort

1

Dies sollte Ihr Problem beheben:

// check if city already exists 
public function is_city($city) { 

    $mysqli = $this->aet->getAetSql(); 
    $stmt = $mysqli->prepare('SELECT city_id FROM location_city WHERE c_name = ?'); 

    if (FALSE == $stmt) { 
     return FALSE; 
    } 
    $stmt->bind_param('s', $city); 
    $stmt->execute(); 
    $stmt->bind_result($city_id); 
    if ($stmt->fetch()) { 
     return $city_id; 
    } 

    return $city_id; 
} 
+0

Dank! Jetzt sehe ich, wo das Problem war. –