【发布时间】:2018-10-17 07:45:59
【问题描述】:
我编写了一个程序来读取另一个页面上的 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 也不是 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 中使用插入触发器来检查是否为零并更新为 null?
-
在划分之前你应该检查
if$val2是0然后$div=0就像if($val2==0){$div=0;} -
“我想将它保存为 null,因为你不能除以 0” - 这有什么帮助?
5 / NULL在 PHP 中仍然会收到“除以零”警告。 -
我试图把 $div=0;当我这样做时,它确实将它作为 0 放在数据库中,但我希望它在 $val2 为 0 时保持为 NULL,我尝试了其他方法,例如 $div=null; $div=NULL; $div="(NULL)"; $div="NULL";其他人喜欢,但它不保存
-
该列/表是如何定义的?
Division是否允许 NULL 值?你检查过 mysqli_error 吗?