MySQL更新不会更新,但不会给出任何错误

时间:2019-03-11 20:26:40

标签: php mysql sql sql-update

我有一个基本的Update查询:

$sql = "UPDATE `$row[2]` SET `gebuchtvon` = \"$neugebuchtvon\" WHERE `id` = $row[0]";

如果我将sql粘贴到phpmyadmin的sql字段中,则该sql很好,但由于某些原因,它在PHP文件中不起作用。

我在另一个文件中使用了几乎相同的语法,在该文件中它可以完美工作。

此外,我读到它可能不起作用,因为未满足WHERE语句,但这不是问题,因为正如我所说,如果将其粘贴到SQL字段中,它将起作用。

希望有人能帮助我,在此先感谢:)

更新

$sql =   "SELECT `id`,`gebuchtvon`,'montag' as tag FROM `montag` WHERE `gebuchtvon` <> \"\" "
        ."UNION ALL SELECT `id`,`gebuchtvon`,'dienstag' as tag FROM `dienstag` WHERE `gebuchtvon` <> \"\" "
        ."UNION ALL SELECT `id`,`gebuchtvon`,'mittwoch' as tag FROM `mittwoch` WHERE `gebuchtvon` <> \"\" "
        ."UNION ALL SELECT `id`,`gebuchtvon`,'donnerstag' as tag FROM `donnerstag` WHERE `gebuchtvon` <> \"\" "
        ."UNION ALL SELECT `id`,`gebuchtvon`,'freitag' as tag FROM `freitag` WHERE `gebuchtvon`<> \"\" ";
$result = mysqli_query($conn,$sql);
while($row = mysqli_fetch_array($result)){
    if(strpos($row["gebuchtvon"],$datum) > 0){//nur wenn es eine Buchung gibt, die heute wieder anfängt
        echo $row["gebuchtvon"]."<br><br>";
        $gebuchtvon = explode("#",$row["gebuchtvon"]);//alle gebuchten Fahrten gesplittet
        for($i=0;$i<count($gebuchtvon);$i++){//durch alle Buchungen laufen
            if(strpos($gebuchtvon[$i],$datum) >0){//wenn die aktuelle Buchung wieder anfängt => aktualisieren
                $offset = strrpos($gebuchtvon[$i],"/");
                $gebuchtvon[$i] = substr($gebuchtvon[$i],0,$offset);
            }
        }
        $neugebuchtvon = implode("#",$gebuchtvon); //neuen TExt imploden um in DB zu schreiben
        echo $neugebuchtvon."<br><br>";
        $sql = "UPDATE `".$row[2]."` SET `gebuchtvon` = \"".$neugebuchtvon."\" WHERE `id` = ".$row[0];
        echo $sql."<br><br>";
        $ergebnis = mysqli_query($conn,$sql);
        echo $ergebnis."<br><br>";
    }
}

我不知道您需要多少代码...

抱歉,我是德语变量名,而jsut所做的事情描述了这些变量的作用

更新2

没有重复。没有错误,因此我可以检查没有错误。

更新3

var_dump($ row):

array(6) { [0]=> string(1) "3" ["id"]=> string(1) "3" [1]=> string(29) "1/h/2019-03-11#1/r/2019-03-11" ["gebuchtvon"]=> string(29) "1/h/2019-03-11#1/r/2019-03-11" [2]=> string(7) "freitag" ["tag"]=> string(7) "freitag" }

更新4

给出的SQL是: 更新freitag SET gebuchtvon =“ 1 / h#1 / r”,其中id = 3;只是一个例子...

1 个答案:

答案 0 :(得分:-2)

您可以尝试此操作以捕获错误:

try {
    $sql = "UPDATE ".$row[2]." SET gebuchtvon = '".$neugebuchtvon."' WHERE id = ".$row[0];
} catch (Exception $e) {
    print_r($e);
    die;
}