所以我这样做:
<?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);
?>假设$_POSTint是"Foo‘bar“。单引号仍然没有转义,并且在运行脚本时,由于引号的原因,我得到了一个MySQL错误。怎么了?
发布于 2011-07-09 01:15:50
m_r_e_s()返回转义值,它不修改原始值。
$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]。
发布于 2011-07-09 01:16:31
您没有在查询中使用mysql_real_escape_string的结果。试着这样做:
$int = nl2br(mysql_real_escape_string($_POST[int]););发布于 2011-07-09 03:04:23
’而不是$_POSTint。
https://stackoverflow.com/questions/6627971
复制相似问题