2017-06-03 2 views
0

ich das nächste Problem:PHP keine Daten aus MySQL immer

Mein Code ist dieses:

$id=$_SESSION["id"]; 
$query="select id_period from periods where id_group=$id and end=NULL"; 
$result=mysqli_query($conn,$query); 

if(mysqli_num_rows($result)==0){ 
$insert=mysqli_query($conn,"insert into periods(id_group) values($id)"); 
} 

while($row=mysqli_fetch_row($result)){ 
    $period=$row['id_period']; 
} 

$query="insert into times(id_period,id_group) values($period,$id)"; 
echo $query; 
$insert=mysqli_query($conn,$query); 

Dieser Code sollte suchen, wenn eine ‚Zeit‘ mit dem Feld ‚Ende‘ existiert = NULL . Wenn nicht, dann fügen Sie einen neuen ein. Das funktioniert gut. Der nächste Teil funktioniert jedoch nicht. Die Einfügung in die 'Times'-Abfrage benötigt die id_period, die durch die var $ -Periode gegeben ist, aber die WHILE wird niemals ausgeführt.

Irgendeine Idee? Vielen Dank.

+0

** WARNUNG **: Wenn Sie 'mysqli' verwenden, sollten Sie [parametrisierte Abfragen] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) und [' bind_param' verwenden ] (http://php.net/manual/en/mysqli-stmt.bind-param.php), um Benutzerdaten zu Ihrer Anfrage hinzuzufügen. ** Verwenden Sie NICHT ** String-Interpolation oder Verkettung, um dies zu erreichen, weil Sie einen schwerwiegenden [SQL injection bug] erstellt haben (http://bobby-tables.com/). ** NIEMALS ** $ _POST ',' $ _GET' oder ** irgendwelche ** Benutzerdaten direkt in eine Abfrage einfügen, es kann sehr schädlich sein, wenn jemand versucht, Ihren Fehler auszunutzen. – tadman

+0

Mögliches Duplikat von [Vergleichen mit NULL-Werten] (https://stackoverflow.com/questions/2393076/comparing-with-null-values) – CBroe

Antwort

0

Ich finde Problem in unten, während Code

while($row=mysqli_fetch_row($result)) { 
    $period=$row['id_period']; 
} 

In diesem für Daten aus dem Ergebnis zu holen stellen Sie Gebrauch mysqli_fetch_row per PHP-Dokumentation http://php.net/manual/en/mysqli-result.fetch-row.php mysqli_fetch_row hat - einen Datensatz als indiziertes Array.

Wenn Sie in Abrufen von Daten unter Verwendung von Namen als Index interessiert sind, dann nutzen Sie bitte http://php.net/manual/en/mysqli-result.fetch-assoc.php es mysqli_fetch_assoc - Liefert einen Datensatz als assoziatives Array.

Hofft, dass es Ihnen hilft.

+0

Arbeiten! Ich hatte bereits versucht, fetch_assoc zu verwenden, aber in diesem Moment hatte ich sicherlich ein anderes Problem, also habe ich das verworfen. Vielen Dank! –

+0

@CrateOFS Sie sind willkommen. – absawant25

0

Ihnen fehlt ein Wert in, drei Felder werden eingefügt, nur 2 Werte angegeben.

$query="insert into times(id_period,id_user,id_group) values($period,$id)"; 

Sie sollten auch in vorbereitete Aussagen und verbindlich prüfen.

+0

Entschuldigung, die echte Abfrage hat mehr Felder. Ich habe vergessen, diesen zu löschen. Aber das Problem immer noch da. –