2017-02-09 2 views
0

Ich habe mysql Abfrage in einer for-Schleife laufen wie diesePHP warten MYSQL zu beenden Abfrage

$date_start = '2017-01-01'; 
$date_end = '2017-01-10'; 
while ($date_start < $date_end){ 
    $sql ("SELECT id FROM mytable WHERE mydate = '$data_start'"); [<--edit] 
    $result = $db->query($sql); 
    $f = $result->fetch(); 
    echo 'result is : '.$f['id']; 
    $date_start = date('Y-m-d', strtotime($date_start. ' + 1 days')); 
} 

ID Ergebnis war immer im Zusammenhang mit ersten $ DATE_START, dann erste SQL-Abfrage ...

Wie PHP warten, bis mysql die Abfrage beendet hat?

EDIT .:

Ok, es war ein Fehler, wenn ich die Schleife hier schaffen, ist aber eine Ablenkung! Es ist kein copy/paste

Danach ich

ID result was always related to first $date_start, then first sql query... 

schrieb Dies bedeutet, dass kein Code Problem ist, wird die Schleife funktioniert, was ich ein PHP-Fehler haben!

Ich werde versuchen, mit MYSQL Fehler

+0

Dieser Code macht keinen Sinn. – apokryfos

+0

Ihr Code ist rot. Was denkst du warum? –

+0

Schauen Sie sich einfach die Hervorhebungsfarbe an. Es gibt ein offensichtliches String-Literal-Problem in diesem Code – RiggsFolly

Antwort

3

Sie berichten Zeichenkettenliteral haben, dass nicht richtig geschlossen ist, und die Zuordnung der Anfrage an die Variable $sql ist falsch. Daher stürzt das Skript ab

// while testing specially if you are developing on a live server 
// that will have error reporting to the screen turned off 
// add these 4 lines so you see your errors on the browser page 
ini_set('display_errors', 1); 
ini_set('log_errors',1); 
error_reporting(E_ALL); 
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 

$date_start = '2017-01-01'; 
$date_end = '2017-01-10'; 
while ($date_start < $date_end){ 
    $sql = "SELECT id FROM mytable WHERE mydate = '$data_start'"; 
    // --new character added to close the literal------------->^ 
    //() removed 
    $result = $db->query($sql); 
    // check for errors 
    if (!$result) { 
     echo $result->error; 
     exit; 
    } 
    $f = $result->fetch(); 
    echo 'result is : '.$f['id']; 
    $date_start = date('Y-m-d', strtotime($date_start. ' + 1 days')); 
} 
+0

Danke, ich werde versuchen mit Fehlerberichten, speziell von MySQL, die ich nie benutze – FireFoxII