MySQL不允许我使用“s和s”我为我的网站制作的上下文表单。所有其他字段发送到数据库都很好,但是如果您使用除了以外的任何其他字段,那么longtext也会出错字母和数字。
我有长文本,而不是null。
我想把mysql_real_escape_string()放在我的代码中
答案 0 :(得分:1)
使用参数化查询然后您不必担心转义特殊字符,它也更安全(即针对SQL注入攻击)。
答案 1 :(得分:0)
在编程语言中找到逃避斜线和类似函数的函数,并在发送到数据库之前将其应用于输出
答案 2 :(得分:0)
这应该像提议的那样工作
$sql2="INSERT INTO $tbl_name(s_id, s_name, s_email, s_content) VALUES(".$id.", '".mysql_real_escape_string($s_name)."', '".mysql_real_escape_string($s_email)."', '".mysql_real_escape_string($s_content)."')";
你应该:利用准备好的陈述,如果你不这样做,总是逃避!来自客户输入的值。如果不是,您的网站很容易被脚本 - kiddis攻击,只是测试一些sql注入。
答案 3 :(得分:0)
最好使用准备好的语句,然后使用你采用的方法,使用像PDO这样的准备语句的优点,它将为你免受攻击如MYSQL注入等还有很多,基本上PDO是一个内置的PHP这个类让你可以轻松地与数据库进行交互,而且它非常灵活,例如,
要使用PDO建立连接,您只需要使用一行代码,就像初始化对象一样。
$dbh = new PDO('mysql:host='.HOST.';dbname='.DATABASE,USERNAME,PASSWORD);
就是这样,请注意我使用了Constant,你可以用自己的替换它。
现在例如,如果你想使用PDO选择一些东西,你只需要编写一行代码。
$sth = $dbh->query('SELECT id,name FROM table');
//Query is executed in the above code, and when you want to retrieve the value you just need another line of code.
$result = $sth->fetchAll(PDO::FETCH_ASSOC);
就是这样,现在你有一个数组$ result,它保存了所有检索到的值。是不是很简单易用?
开始使用PDO,请参阅net.tutsplus.com中的本教程 他们已经很好地解释了。