Преобразование пустой строки в ноль - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть форма, в которой значение POST продолжает появляться как "" пустая строка в уникальном поле SQL. Оно должно быть уникальным, поскольку поле является необязательным, но для струи оно не может иметь 2 одинаковых значения. Уникальное значение допускает нулевые множественные значения. Я даже не хочу говорить, что я пытался сделать, я пытаюсь это исправить за последние несколько дней. Самое близкое, что я получил, это поместил '$ OIB' = IF ('$ OIB' = '', NULL, '$ OIB' в инструкцию NSERT INTO, затем я получаю нулевые значения в базе данных, но по какой-то причине, когда число вводится в Поле формы OIB помещает номер 1 в базу данных ...

$result = mysqli_query($conn, "SELECT OIB, NAZIV FROM STRANKEP WHERE OIB = '$OIB' OR NAZIV = '$NAZIV'");

if(mysqli_num_rows($result) == 0) {
     // row not found, do stuff...
     $sql = "INSERT INTO STRANKEP (NAZIV, OIB, EMAIL, ADRESA, TELEFON) VALUES ('$NAZIV', CASE WHEN '$OIB' = '' THEN 'NULL', '$EMAIL', '$ADRESA', '$TELEFON')";
    $query = mysqli_query($conn, $sql);

Это решение дает мне нулевое значение, но не реальный $ OIB при вводе в форму, оно просто помещает число 1.

$result = mysqli_query($conn, "SELECT OIB, NAZIV FROM STRANKEP WHERE OIB = '$OIB' OR NAZIV = '$NAZIV'");

if(mysqli_num_rows($result) == 0) {
     // row not found, do stuff...
     $sql = "INSERT INTO STRANKEP (NAZIV, OIB, EMAIL, ADRESA, TELEFON) VALUES ('$NAZIV', '$OIB'=IF('$OIB'='',NULL,'$OIB'), '$EMAIL', '$ADRESA', '$TELEFON')";
    $query = mysqli_query($conn, $sql);

Заранее спасибо за помощь.

Ответы [ 3 ]

2 голосов
/ 09 февраля 2020

Вы также можете использовать IF-пункт

Примерно так:

INSERT INTO STRANKEP (NAZIV, OIB, EMAIL, ADRESA, TELEFON) VALUES 
('$NAZIV', IF('$OIB' = '', NULL,'$OIB'), '$EMAIL', '$ADRESA', '$TELEFON');

Но, как уже упоминалось в моем комментарии, используйте готовые выражения, как в PDO https://phpdelusions.net/pdo#prepared

2 голосов
/ 09 февраля 2020

Попробуйте

CASE '$OIB' WHEN '' THEN NULL ELSE '$OIB' END
1 голос
/ 09 февраля 2020

Я бы порекомендовал nullif(). Это встроенная стандартная функция, которая делает именно это:

nullif(?, '')

Примечание. Не разбирайте запросы с постоянными значениями. Это делает код подверженным атакам SQL. И это может привести к очень трудно отлаживаемым ошибкам. Используйте параметры!

...