Сохранить переменную php как null для sql

Я сделал программу для чтения 3 входов на другой странице: ID, code1 и code2.

Один - это код, который легко найти, а два других - переменные, которые будут использоваться для суммирования, вычитания, умножения деления, а затем сохранения всего этого в базе данных.

Я подключил его к этому php-коду:

if (isset($_POST["ID"]))
 {
    $id=($_POST["ID"]);
   $val1=($_POST["code1"]);
   $val2=($_POST["code2"]);

if ($val2 == 0){
    $sum = $val1 + $val2;
    $res = $val1 - $val2;
    $mul = $val1 * $val2;
    $div = NULL;
}else{
    $sum = $val1 + $val2;
    $res = $val1 - $val2;
    $mul = $val1 * $val2;
    $div = $val1 / $val2;
}

 $cnn=mysqli_connect("localhost","root","CC2CRO","ejercicios");
 if ($cnn) {
echo ("<SCRIPT LANGUAGE='JavaScript'>window.alert('CONEXION EXITOSA  
 !!!!')</SCRIPT>");         
    $sqlnr = mysqli_query($cnn, "INSERT INTO calculadora (Id, Valor1, 
 Valor2, Suma, Resta, Multiplicacion, Division) VALUES ('$id', '$val1', 
 '$val2', '$sum', '$res', '$mul', '$div')");

Это связано с базой данных MySQL, до сих пор это работало, например, я поставил OP45, 12, 3 когда я вижу, что моя база данных сохранена как OP45123159364 Моя проблема связана с тем, что когда я использую 0 для $ val2, я хотел сохранить его как null, поскольку вы не можете разделить его на 0, но когда я запускаю его, он оставляет всю строку пустой, это происходит только тогда, когда $ val2 равно 0, если $ val2 равно 1 или больше, он заполняет всю строку.

В моей базе данных Id - varchar, а остальные - десятичные (6,2), Id - PK и Not Null, также Valor1 и Valor2 тоже Not Null.

под блоком кода сверху у меня есть еще один

 if ($sqlnr)
        echo ("<SCRIPT LANGUAGE='JavaScript'>window.alert('REGISTRO ALMACENADO CORRECTAMENTE !!!!')</SCRIPT>");
    else{
        echo ("<SCRIPT LANGUAGE='JavaScript'>window.alert('EL REGISTRO NO PUDO SER GUARDADO !!!!')</SCRIPT>");
    }

Первый виден, если он был сохранен в базе данных, а второй, если он не был сохранен, поэтому, когда val2 равен 0, он всегда дает мне второе сообщение.

Рассматривали ли вы триггер вставки в MySQL для проверки нуля и обновления до нуля?

Royal Wares 17.10.2018 09:48

перед разделением вы должны проверить if, $val2 - это 0, затем $div=0, как if ($val2==0){$div=0;}

Bilal Ahmed 17.10.2018 09:48
«Я хотел сохранить его как null, так как вы не можете разделить на 0» - как это поможет? 5 / NULL по-прежнему выдает предупреждение «Деление на ноль» в PHP.
misorude 17.10.2018 09:57

Я попытался поставить $ div = 0; когда я это делаю, он помещает его как 0 в базу данных, но я хочу, чтобы он оставался как NULL, когда $ val2 равен 0, я пробовал другие вещи, такие как $ div = null; $ div = NULL; $ div = "(ПУСТО)"; $ div = "NULL"; другим это нравится, но это не спасает

Anguis Nox 17.10.2018 10:00

как определяется этот столбец / таблица? Допускается ли для Division значение NULL? Вы проверяли mysqli_error?

Jeff 17.10.2018 10:02

У меня есть этот настроенный, поэтому, если он равен 0, он не выполняет деление if ($val2 == 0){ $sum = $val1 + $val2; $res = $val1 - $val2; $mul = $val1 * $val2; $div = NULL; И затем настраивает else, если $ val2 больше 0

Anguis Nox 17.10.2018 10:03

да, я оставил NULL в качестве значения, разрешенного для деления

Anguis Nox 17.10.2018 10:04

насколько я помню, NULL не должен заключаться в кавычки, но $div должен быть буквальной строкой «NULL» в вашем случае.

Jeff 17.10.2018 10:06

Вы можете / должны переключиться на подготовленные операторы, чтобы все было проще ...

Jeff 17.10.2018 10:08

и снова: "вы проверили mysqli_error"?

Jeff 17.10.2018 10:10

Тот факт, что вы получаете сообщение об ошибке после запроса, указывает на то, что вы получаете сообщение об ошибке из базы данных, а mysqli_query возвращает FALSE. Пожалуйста, вызовите mysqli_error на false и опубликуйте результат.

Christoph Grimmer-Dietrich 17.10.2018 10:17

Он не показывает mysqli_error или, по крайней мере, у меня нет его настройки, чтобы назвать его единственными ошибками, которые у меня есть, если в коде есть одна, я вижу ее на странице под входами, и она показывает мне, в какой строке у меня есть ошибка, но не для mysqli

Anguis Nox 17.10.2018 10:19

В вашем запросе попробуйте изменить '$div' на " . ($val2 == 0 ? "NULL" : "'$div'") . "

Nick 17.10.2018 10:23

@Nick Спасибо, похоже, это сработало, изменив $ div в операторе if на $ div = "" и добавив эту строку в запрос, я этого не знаю, поэтому я читал некоторые документы, чтобы поработать над своим кодом, помните если вы объясните мне эту строку или дадите мне ссылку на то, где я могу прочитать об этой строке, поскольку из того, что я прочитал, я не нашел ничего подобного, чтобы мне помочь.

Anguis Nox 17.10.2018 10:34

@AnguisNox, если вы распечатаете запрос, вы увидите, что когда $val2 == 0 запрос показывает значение, вставленное в Division как NULL, а не пустую строку. Это, вероятно, позволяет столбцу принимать значение по умолчанию или даже NULL, если это разрешено, где пустая строка, вероятно, не является допустимым значением для столбца.

Nick 17.10.2018 13:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
15
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны изменить

$div = NULL;  to  $div = 'NULL';

затем удалите одинарные кавычки в '$ div' в строке sql ( '$div' to $div )

$sqlnr = mysqli_query($cnn, "INSERT INTO calculadora (Id, Valor1, 
        Valor2, Suma, Resta, Multiplicacion, Division) VALUES ('$id', '$val1', 
       '$val2', '$sum', '$res', '$mul', $div)");

Другие вопросы по теме