php
  • mysql
  • 2012-03-26 8 views 0 likes 
    0

    Wenn ich mehrere MySQL Abfragen auf der gleichen Tabelle, gelegentlich werden einige übersprungen.Mysql Mehrere PHP-Abfragen, übersprungen

    Warum ist das?

    Zum Beispiel:

    <?php 
    mysql_query("UPDATE `tb` SET `field` = '' WHERE `Id` = '$something'"); 
    mysql_query("UPDATE `tb` SET `field2` = '' WHERE `Id` = '$something'"); 
    mysql_query("UPDATE `tb` SET `field3` = '0' WHERE `Id` = '$something'"); 
    ?> 
    

    Manchmal eine der Abfragen wird nicht ausgeführt?

    Warum ist das?

    -Oder ist etwas falsch mit meinem Server nicht allgemein mysql?

    (Natürlich weiß ich jetzt die gleiche Tabelle in derselben Abfrage zu aktualisieren, aber vorher war ich sehr verwirrt, warum es geschieht, kann jemand bitte erklären?)

    Dank!

    +0

    könnten Sie uns den Code vor und nach den Abfragen zeigen? – F21

    +0

    Probieren Sie 'mysql_query (" ... ") oder sterben (mysql_error());' für Debugging-Zwecke. Ich wette, dass einige Ihrer Fragen nur scheitern. Der PHP-Interpreter wird im Allgemeinen keine Anweisungen überspringen, und der MySQL DBS wird Abfragen nicht zufällig ignorieren. – Basti

    +0

    Versuchen Sie, nach jeder Abfrage zu Debuggingzwecken 'mysql_error()' zurückzugeben. Dies wird Ihnen sagen, ob etwas schief gelaufen ist mit der Abfrage –

    Antwort

    0

    Debug-Code, um zu sehen, ob eine Abfrage fehlschlägt:

    $result = mysql_query("UPDATE `tb` SET `field` = '' WHERE `Id` = '$something'"); 
    if (!$result) { 
        die('Invalid query: ' . mysql_error()); 
    } 
    
    $result = mysql_query("UPDATE `tb` SET `field2` = '' WHERE `Id` = '$something'"); 
    if (!$result) { 
        die('Invalid query: ' . mysql_error()); 
    } 
    
    $result = mysql_query("UPDATE `tb` SET `field3` = '0' WHERE `Id` = '$something'"); 
    if (!$result) { 
        die('Invalid query: ' . mysql_error()); 
    } 
    
    0

    Verwenden Sie die folgenden, den Code zu debuggen:

    mysql_query("UPDATE `tb` SET `field` = '' WHERE `Id` = '$something'") or die(mysql_error()); 
    mysql_query("UPDATE `tb` SET `field2` = '' WHERE `Id` = '$something'") or die(mysql_error()); 
    mysql_query("UPDATE `tb` SET `field3` = '0' WHERE `Id` = '$something'") or die(mysql_error()); 
    

    UPDATE

    Vergewissern Sie sich, zu entkommen $something mit :

    $something = mysql_real_escape_string($something); 
    
    3

    Sie brauchen nicht 3 Abfragen zu machen, wenn Sie die gleichen Zeilen zu ändern sind:

    $q = " 
        UPDATE table 
        SET field = '', 
         field2 = '', 
         field3 = 0 
        WHERE Id = :id 
    "; 
    $statement = $pdo->prepare($q); 
    $statement->bindParam(':id', $something, PDO::PARAM_INT); 
    $statement->execute(); 
    

    Außerdem sollten Sie die alten mysql_* Funktionen nicht mehr verwenden. Sie werden nicht mehr gepflegt, und der Prozess zur Einstellung hat already begun.

    Vielleicht sollten Sie die über 10 Jahre alte API meiden und etwas für dieses Jahrzehnt lernen: PDO Tutorial for MySQL Developers.

    +0

    Alt ist keine schlechte Sache, wenn man über Librarys spricht.Niemals ein laufendes System berühren.Der Post, der den Wunsch äußert, ext/mysql zu entfernen, ist fast zwei Jahre alt und ich nicht sehen Sie, dass sie sogar die Dokumentation mit PDO-Beispielen erweitert haben. – Basti

    +0

    jetzt das ist der Geist der Technologie !! -.- –

    +2

    @Basti: Alt ist eine schlechte Sache. Denken Sie daran, dass [Selbstmordattentate] (http://mylifeblogs.com/2011/ 10/Selbstzufriedenheit-Kills /) ...Erinnere dich daran, was Einstein gesagt hat: * Die Welt ist ein gefährlicher Ort. Nicht wegen der Menschen, die böse sind; aber wegen der Leute, die nichts dagegen tun. * Also ja, alt ist eine schlechte Sache, und zu sagen * Berühren Sie niemals ein laufendes System * ist nachlässig. Nun, ergreife Vorsichtsmaßnahmen und tüftle nicht ohne Grund daran herum, aber wenn es einen Grund gibt (was es in diesem Fall gibt), berühre unbedingt ein laufendes System ... – ircmaxell

    Verwandte Themen