我使用以下代码将数据添加到mysql数据库
<?php
$debdes = $_POST['debdes'];
$debamt = $_POST['debamt'];
$crdes = $_POST['crdes'];
$cramt = $_POST['cramt'];
$date = $_POST['date'];
$cberror = "<h1>Data not Added</h1><br/><br/><h3>Please Follow The Instructions</h3>";
include_once ("db.php");
if (empty ($date)) die ("$cberror");
if (empty ($debamt) && empty ($debdes) && empty ($cramt) && empty ($cramt)) die ("$cberror");
if (!empty($debamt) && empty ($debdes))die ("$cberror");
if (!empty($debdes) && empty ($debamt)) die ("$cberror");
if (!empty($cramt) && empty ($crdes)) die ("$cberror");
if (!empty($crdes) && empty ($cramt)) die ("$cberror");
$ucbook = "INSERT INTO cbook(debdes,debamt,crdes,cramt,date) VALUES ('$debdes','$debamt','$crdes','$cramt','$date');";
if(mysql_query("$ucbook"))
{
echo "<h3>One Record Updated Successfully with the following Details </h3><br/>";
echo "Date = $date <br/><br/>";
echo "Debt Amount =$debamt <br/><br/>";
echo "Debt Description = $debdes <br/><br/>";
echo "Credit Amount = $cramt <br/><br/>";
echo "Credit Description = $crdes <br/><br/>";
}
else
{
echo "<be/><br/>The Following Error Occure While Updatig Data<br/><br/>";
echo mysql_error();
}
?>
现在问题是因为我在mysql中将“debamt”的值设置为整数然后出现错误
Incorrect integer value: '' for column 'debamt' at row 1
虽然我没有在“debamt”中插入值,但我也正确填写其他数据
??????
答案 0 :(得分:2)
这意味着debamt
为空。 Empty不是正确的整数值。
您知道,您也可以使用||
逻辑运算符,这意味着OR。因为这一行:
if (empty ($debamt) && empty ($debdes) && empty ($cramt) && empty ($cramt)) die ("$cberror");
...表示即使其中一个值不为空,if子句也不会触发。你可能想要的是:
if (empty ($debamt) || empty ($debdes) || empty ($cramt) || empty ($cramt)) die ("$cberror");
这样,如果其中一个字段为空,则脚本将不会继续。这也使你的后续检查无用。
由于您当前的代码,$debamt
完全可能为空。我会鼓励你去思考你的if条款,看看有什么必要。
答案 1 :(得分:0)
从您的代码中可以看出$debamt
仍然可能为空,因此您的sql语句试图插入一个空参数。 ''不是有效整数
答案 2 :(得分:0)
空字符串不是有效整数。您必须提供适当数量的应该声明列以允许空值(并传递空值而不是空字符串)。
您还应该阅读SQL injection。