2017-02-01 1 views
0

Überprüfen, ob in der Datenbank eine $ _GET-Variable vorhanden ist, wenn kein Fehler ausgegeben wird. Ich verwende diesen Code:

$connection = mysqli_connect("localhost" , "root" , "" , "test"); 
$query = "SELECT site_title FROM websites"; 
$select_all_sites = mysqli_query($connection,$query); 
$row_count = mysqli_num_rows($select_all_sites); 

for ($i=0; $i < $row_count; $i++){ 
    $row = mysqli_fetch_assoc($select_all_sites); 
    if($_GET['website'] == $row['site_title']){ 
     echo 'Success'; 
    }else{ 
     echo 'error'; 
    } 
} 

Er druckt zu viele Fehler oder (. Der sonst Zustand bleibt immer wahr) Helfen Sie mir.

+1

Ein nützlicher Link für Sie; [Wie kann ich SQL-Injection in PHP verhindern?] (Http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php?rq=1) – Tom

+3

Auch würde ich vorschlagen Um stattdessen PDO zu verwenden, ist es lesbarer und einfacher zu handhaben. – Stoffo

+0

Es gibt keine Dinge wie für/else-Schleifen in PHP, anders als bei Python. Sie müssen die Anzahl der Zeilen prüfen, die Sie vor dem Durchlaufen haben, und den Fehler, wenn Sie keine haben. – Tom

Antwort

-2

Zuerst müssen Sie prüfen, ob die Variable get tatsächlich existiert. Sie können dies mit der PHP-Isset-Funktion http://php.net/manual/en/function.isset.php tun, wenn es vorhanden ist, können Sie fortfahren, um zu sehen, ob es Ihren Website-Titel entspricht, wie Sie es jetzt tun.

0

Es ist nicht sicher, irgendeine der PHP-Array-Variablen direkt in Ihre Abfrage zu werfen. Sie müssen es reinigen. Erwägen Sie die Verwendung von mysqli_real_escape_string. Obwohl ich vorschlagen würde, zu PDO zu wechseln.

Zurück zu Ihrer Frage, warum können Sie nicht eine while-Schleife anstelle der for-Schleife verwenden. Sie müssen überprüfen, ob die variable Website tatsächlich existiert oder nicht. phps isset-Funktion wird helfen. Versuchen Sie Folgendes:

-1

Bitte versuchen Sie unter dem Code und informieren Sie mich, wenn Sie einen Fehler begegnen.

<?php 
$connection = mysqli_connect("localhost" , "root" , "" , "test"); 
$query = "SELECT site_title FROM websites"; 
$select_all_sites = mysqli_query($connection,$query); 

while($row = mysqli_fetch_assoc($select_all_sites)) 
{ 
    if($_GET['website'] == $row['site_title']) 
    { 
     echo 'Success'; 
    } 
    else 
    { 
     echo 'error'; 
    } 
} 
?> 
+0

Ihr Code druckt ständig zu viele Fehler. In diesem Code ist die else-Bedingung immer wahr. – user617126

+0

Ich habe das Problem gelöst :) :) Wir sollten die sonst Bedingung oder nicht gleich Bedingung außerhalb der Schleife halten.dann wird es perfekt funktionieren. Wenn wir nicht gleich oder sonst Bedingung innerhalb der Schleife halten, druckt es dieses viele Male. – user617126

+0

@ user617126 Ich habe gerade eine if-Bedingung zum Vergleich der Variablen geschrieben. Ich habe auch temporäre Variablen in If-Bedingung. Ich weiß nicht, welche Variablen kommen, warf deinen Code. Sie sollten die korrekten Variablen in if-Bedingung verwenden, dann funktioniert es gut. –

Verwandte Themen