Обновление MySQL не обновляет, но не выдает никаких ошибок - PullRequest
0 голосов
/ 11 марта 2019

У меня есть базовый запрос на обновление:

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

sql работает нормально, если я вставлю его в поле sql phpmyadmin, но по какой-то причине он не работает из файла PHP.

Я использовал почти такой же синтаксис в другом файле, где он отлично работает.

Кроме того, я читал, что он может не работать, потому что оператор WHERE не выполняется, но это не может быть проблемой, потому что, как я уже сказал, это работает, если я вставлю его в поле SQL.

Надеюсь, кто-нибудь может мне помочь, заранее спасибо :)

UPDATE

$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 ($ строка):

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 голосов
/ 11 марта 2019

Вы можете попробовать это, чтобы поймать ошибку:

try {
    $sql = "UPDATE ".$row[2]." SET gebuchtvon = '".$neugebuchtvon."' WHERE id = ".$row[0];
} catch (Exception $e) {
    print_r($e);
    die;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...