我刚刚实现了mysql_real_escape_string(),现在我的脚本不会写入数据库了。在添加mysql_real_escape_string()之前一切正常:
任何想法??
$name = mysql_real_escape_string($_POST['name']);
$description = mysql_real_escape_string($_POST['description']);
$custid = mysql_real_escape_string($_SESSION['customerid']);
mysql_send("INSERT INTO list
SET id = '',
name = '$name',
description = '$description',
custid = '$custid' ");
答案 0 :(得分:2)
什么是mysql_ 发送功能?
如果将其更改为mysql_query();
答案 1 :(得分:1)
应该很容易弄清楚发生了什么。
Fist,而不是将您正在构建的查询发送到数据库,将其回显(或记录),并查看您实际发送到数据库的内容。
如果这不明显,请看看mysql_error()必须说什么。
答案 2 :(得分:0)
mysql_real_escape_string应该将数据库连接作为第二个参数传递,因为它询问数据库需要转义哪些字符。
$connection = mysql_connect(HOST, USERNAME, PASSWORD);
$cleanstring = mysql_real_escape_string("my string", $connection);
答案 3 :(得分:0)
理解如何使用某些功能的典型失败......
你只是在原始输入数据上使用mysql_real_escape_string。你听说过santizing / validating输入吗? mysql_real_escape_string
对数字没有意义。如果您已将变量验证为数字,则无需将其转义。
mysql_send是mysql_query的别名吗?
使用调试代码,在echo mysql_error();
之后添加mysql_send(...)
。
答案 4 :(得分:0)
mysql_connect("localhost", "username", "password") or die(mysql_error());
mysql_select_db("database") or die(mysql_error());
$name = mysql_real_escape_string($_POST['name']);
$description = mysql_real_escape_string($_POST['description']);
$custid = mysql_real_escape_string($_SESSION['customerid']);
//If you doing Update use this code
mysql_query("UPDATE list SET id = '', name = '$name', description = '$description' WHERE custid = '$custid' ") or die(mysql_error());
//OR if you doing Insert use this code.
mysql_query("INSERT INTO list(name, description, custid) VALUES('$name', '$description', '$custid')") or die(mysql_error());
//If custid is Integer type user $custid instead of '$custid'.
如果要根据custid更新列表中的记录,请使用UPDATE命令;如果是insertinf,则记录到列表中使用INSERT命令。