ОБНОВЛЕНИЕ SQLITE3 PDO PHP не работает, пока есть совпадение - PullRequest
1 голос
/ 19 марта 2019

Я создал базу данных SQLite3 через PHP и PDO
Вставка записи и удаление записи работает нормально, но запись UPDATE не

public function update_All($mStore_Order_DataClass) {
            try 
            {
                $sql = "UPDATE Orders "
                        . "SET x_Name = :x_Name, "
                        . "x_PhoneNumber1 = :x_PhoneNumber1, "
                        . "x_PhoneNumber2 = :x_PhoneNumber2, "
                        . "x_Address1 = :x_Address1, "
                        . "x_Date = :x_Date, "
                        . "x_Time = :x_Time, "
                        . "x_Status = :x_Status, "
                        . "x_M2 = :x_M2, "
                        . "x_M3 = :x_M3, "
                        . "x_Barcode = :Barcode, "
                        . "x_Price = :x_Price, "
                        . "x_Discount = :x_Discount, "
                        . "x_Number = :x_Number "
                        . "WHERE x_ID = :x_ID ";

                $stmt = $this->pdo->prepare($sql);

                $stmt->bindValue(':x_ID'          , $mStore_Order_DataClass->getx_ID()          );
                $stmt->bindValue(':x_Name'        , $mStore_Order_DataClass->getx_Name()        );
                $stmt->bindValue(':x_PhoneNumber1', $mStore_Order_DataClass->getx_PhoneNumber1());
                $stmt->bindValue(':x_PhoneNumber2', $mStore_Order_DataClass->getx_PhoneNumber2());
                $stmt->bindValue(':x_Address1'    , $mStore_Order_DataClass->getx_Address1()    );
                $stmt->bindValue(':x_Date'        , $mStore_Order_DataClass->getx_Date()        );
                $stmt->bindValue(':x_Time'        , $mStore_Order_DataClass->getx_Time()        );
                $stmt->bindValue(':x_Status'      , $mStore_Order_DataClass->getx_Status()      );
                $stmt->bindValue(':x_M2'          , $mStore_Order_DataClass->getx_M2()          );
                $stmt->bindValue(':x_M3'          , $mStore_Order_DataClass->getx_M3()          );
                $stmt->bindValue(':x_Barcode'     , $mStore_Order_DataClass->getx_Barcode()     );
                $stmt->bindValue(':x_Price'       , $mStore_Order_DataClass->getx_Price()       );
                $stmt->bindValue(':x_Discount'    , $mStore_Order_DataClass->getx_Discount()    );
                $stmt->bindValue(':x_Number'      , $mStore_Order_DataClass->getx_Number()      );

                $stmt->execute();

                $mrowCount = $stmt->rowCount();
                echo "\nA :\n{$mrowCount}\n";

                return TRUE;
            } 
            catch (\PDOException $e)            
            {
                return FALSE;
            }
        }        

Кажется, что нет совпадения и поэтому нет обновленияпричина $mrowCount равна 0

Я вижу, что есть совпадение браузер БД для SQLITE

DB browser for SQLITE Log

А также я поставил точку останова в коде, и ниже вы можете увидеть $ sql из переменного окна IDE NetBeans:

"UPDATE Orders SET SET x_Name =: x_Name, x_PhoneNumber1 =: x_PhoneNumber1, x_PhoneNumber2 =: x_PhoneNumber2, x_Address1 =: x_Address1, x_Date =: x_Date, x_Time =: x_Time, x_Status =: x_Status, x_M = x_M_M_2: = код_файла: x_M = код_файла: x_M2: x_2: код_файла: x_M2: x_2: код_файла: x_M2: x_2: код_файла: x_M2: =: x_Price, x_Discount =: x_Discount, x_Number =: x_Number WHERE x_ID =: x_ID "

И:
enter image description here

Так что вы можетеувидеть, что для ID-2 найдено совпадение, а обновления не происходит

Кстати, естьошибки нет и TRUE возвращается

Что здесь происходит?

1 Ответ

0 голосов
/ 19 марта 2019

Я сузил код и наконец нашел проблему следующим образом:

x_Barcode =: штрих-код

Должно быть следующим:

x_Barcode =: x_ Штрих-код

Это была действительно тихая проблема, потому что ошибки не было, и функция вернула true

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...