Я сделал программу для чтения 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, он всегда дает мне второе сообщение.
перед разделением вы должны проверить if, $val2 - это 0, затем $div=0, как if ($val2==0){$div=0;}
5 / NULL по-прежнему выдает предупреждение «Деление на ноль» в PHP.
Я попытался поставить $ div = 0; когда я это делаю, он помещает его как 0 в базу данных, но я хочу, чтобы он оставался как NULL, когда $ val2 равен 0, я пробовал другие вещи, такие как $ div = null; $ div = NULL; $ div = "(ПУСТО)"; $ div = "NULL"; другим это нравится, но это не спасает
как определяется этот столбец / таблица? Допускается ли для Division значение NULL? Вы проверяли mysqli_error?
У меня есть этот настроенный, поэтому, если он равен 0, он не выполняет деление if ($val2 == 0){ $sum = $val1 + $val2; $res = $val1 - $val2; $mul = $val1 * $val2; $div = NULL; И затем настраивает else, если $ val2 больше 0
да, я оставил NULL в качестве значения, разрешенного для деления
насколько я помню, NULL не должен заключаться в кавычки, но $div должен быть буквальной строкой «NULL» в вашем случае.
Вы можете / должны переключиться на подготовленные операторы, чтобы все было проще ...
и снова: "вы проверили mysqli_error"?
Тот факт, что вы получаете сообщение об ошибке после запроса, указывает на то, что вы получаете сообщение об ошибке из базы данных, а mysqli_query возвращает FALSE. Пожалуйста, вызовите mysqli_error на false и опубликуйте результат.
Он не показывает mysqli_error или, по крайней мере, у меня нет его настройки, чтобы назвать его единственными ошибками, которые у меня есть, если в коде есть одна, я вижу ее на странице под входами, и она показывает мне, в какой строке у меня есть ошибка, но не для mysqli
В вашем запросе попробуйте изменить '$div' на " . ($val2 == 0 ? "NULL" : "'$div'") . "
@Nick Спасибо, похоже, это сработало, изменив $ div в операторе if на $ div = "" и добавив эту строку в запрос, я этого не знаю, поэтому я читал некоторые документы, чтобы поработать над своим кодом, помните если вы объясните мне эту строку или дадите мне ссылку на то, где я могу прочитать об этой строке, поскольку из того, что я прочитал, я не нашел ничего подобного, чтобы мне помочь.
@AnguisNox, если вы распечатаете запрос, вы увидите, что когда $val2 == 0 запрос показывает значение, вставленное в Division как NULL, а не пустую строку. Это, вероятно, позволяет столбцу принимать значение по умолчанию или даже NULL, если это разрешено, где пустая строка, вероятно, не является допустимым значением для столбца.






Вы должны изменить
$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)");
Рассматривали ли вы триггер вставки в MySQL для проверки нуля и обновления до нуля?