2016-08-22 1 views
0

Hallo ich schrieb eine Funktion, um meine DB nach doppelten Namen vor der Eingabe zu überprüfen. Ich habe versucht, drei verschiedene Möglichkeiten, die Anzahl der doppelten Einträge zu erfassen, aber numrows kommt immer als Null zurück. Mein letzter Code ist unten.Datenbank doppelte Namensprüfung numrows kommt immer wieder als 0

function check_item_name($item_id, $name) { 

    global $DBConnect; 

$get_name = $DBConnect->stmt_init(); 
$query = "SELECT name 
      FROM item_name 
      WHERE item_id = ? AND name = ? AND end_date IS NULL "; 
$get_name->prepare($query); 
$get_name->bind_param("is", $item_id , $name); 
$get_name->execute(); 
$get_name->bind_result($name); 
$get_name->store_result(); 
$result = $get_name->get_result(); 

if($result->num_rows > 0){ 
    $success = 1; 
} else { 
    $success = 0; 
} 

return $success; 
} 

, so habe ich das jetzt versucht, aber numRows noch null ist, und es gibt etwa zehn von dem gleichen Eintrag in es jetzt so sollte nicht definitiv Null sein.

+0

Mit diesem speziellen Code ist das Problem, dass Sie nicht bind_result und store_result ant gleichzeitig verwenden können. Außerdem gibt es andere Probleme. Überprüfen Sie den richtigen Weg hier: https://phddelusions.net/mysqli/check_value –

+0

Danke krank versuchen Sie es jetzt :) – troggy69

+0

Sorry Knospe es funktioniert immer noch reurning 0 :( – troggy69

Antwort

0

Viele Entschuldigungen der untenstehende Code funktioniert perfekt Ich musste nur meinen Ajax Anruf dafür anpassen. Danke an YourCommonSense für die Antwort.

function check_item_name($item_id, $name) { 

global $DBConnect; 

$get_name = $DBConnect->stmt_init(); 
$query = "SELECT count(1) 
     FROM item_id 
     WHERE item_id = ? AND name = ? AND end_date IS NULL "; 
$get_name->prepare($query); 
$get_name->bind_param("is", $item_id, $name); 
$get_name->execute(); 
$get_name->bind_result($name); 
$get_name->fetch(); 
if ($name){ 
    $success = 1; 
} else { 
    $success = 0; 
} 

return $success; 
}