mysql整数问题

时间:2010-01-04 17:22:16

标签: php

我使用以下代码将数据添加到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”中插入值,但我也正确填写其他数据

??????

3 个答案:

答案 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