【发布时间】:2014-06-11 19:34:24
【问题描述】:
我知道这个主题有很多问题,但我就是无法理解。 我正在使用 php 将帖子插入数据库。每当我的字段为空时,它都会在数据库中插入“0”而不是 NULL 值...我的代码如下:
<?php
$host=""; // Host name
$username=""; // Mysql username
$contra=""; // Mysql password
$db_name=""; // Database name
// Connect to server and select database.
$dbh= mysql_connect("$host", "$username", "$contra")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// username and password sent from form
$var1=$_POST["var1"];
$var2=$_POST["var2"];
$var3=$_POST["var3"];
$var4=$_POST["var4"];
// To protect MySQL injection
$var1=stripslashes($var1);
$var2=stripslashes($var2);
$var3=stripslashes($var3);
$var4=stripslashes($var4);
$var1 = mysql_real_escape_string($var1);
$var2 = mysql_real_escape_string($var2);
$var3 = mysql_real_escape_string($var3);
$var4 = mysql_real_escape_string($var4);
$sql="INSERT INTO PREGUNTAS (Var1, Var2, Var3, Var4) VALUES('$var1', '$var2', '$var3', '$var4');";
$table= mysql_query($sql, $dbh) or die ("you've got a problem");
}
break;
}
?>
我试着像这样启动变量
$var2 = isset($_POST["var2"]) ? "'$var2'" : "NULL";
和
if($_POST['var2'] == "") $_POST['var2'] = "NULL";
但它们都不起作用,查询仍在添加 0。
我收到以下错误/通知:
注意:未定义索引:var2 in /.....php on line ...
你能帮帮我吗?
谢谢!
【问题讨论】:
-
因为
'NULL'是一个字符串,而NULL(不带引号)表示空值 -
可能在您的数据库中为这些列设置的默认值是 0。因此,当传递 NULL 时,输入 0(默认值)。
-
您应该查看 PDO 以正确引用这些字符串
-
stripslashes 不会阻止 SQL 注入。