所以我这样做:
<?php
session_start();
include("../loginconnect.php");
mysql_real_escape_string($_POST[int]);
$int = nl2br($_POST[int]);
$query = "UPDATE `DB`.`TABLE` SET `interests`='$int' WHERE `user`='$_SESSION[user]'";
mysql_query($query) or die(mysql_error());
mysql_close($con);
?>
让我们说$ _POST [int]是“Foo”吧。由于引用,单引号仍未转义并且在运行脚本时出现MySQL错误。怎么了?
答案 0 :(得分:2)
m_r_e_s()RETURNS转义值,它不会修改原始值。
$int = mysql_real_escape_string($_POST['int']);
$query = "UPDATE ... interests = '$int' ...";
请注意,我在POST值的int
周围添加了引号。如果没有引号,PHP会将其视为常量值(例如define())。如果它没有找到该名称的常量,则礼貌地假设您意味着使用字符串并相应地进行调整,但会发出警告。如果你做了
define('int', 'some totally wonky value');
之前,您将访问错误的POST值,因为PHP会将其视为$_POST[some totally wonky value]
。
答案 1 :(得分:2)
您没有在查询中使用mysql_real_escape_string的结果。 试着这样做:
$int = nl2br(mysql_real_escape_string($_POST[int]););
答案 2 :(得分:0)