所以我一直在试图弄清楚UPDATE SQL查询的问题是什么,并在这里搜索问题只是为了找出问题与数据库表中正在更新的实际文本有关。我的PHP应用程序很简单,只是用于添加带有描述的简单网站链接到表(链接),如下所示:
<form action="update.php" method="post">
<p><input type="text" name="description" value="<?php echo($desc); ?>" /></p>
<p><input type="text" name="link" value="<?php echo($link); ?>" /></p>
<p><input type="submit" value="Save Changes" /></p>
</form>
显然这段代码来自edit.php页面,但是当我尝试在update.php中执行UPDATE语句时,它会抛出一个错误,指出语法存在问题。只有当文本中有'例如:
时才会出现这种情况描述:“妈妈的Tutition网站”
如果我拿出'in'妈妈的“制作它妈妈”,那么它会更新!任何人都可以提供解释为什么它这样做以及可能的补救措施/代码来解决问题?
提前感谢您的帮助!
戴夫。
答案 0 :(得分:1)
使用PDO进行数据库处理
最好首先清理数据
$data = sanitize("Mom's");
function sanitize($data){
$data= htmlentities(strip_tags(trim($data)));
return $data;
}
安全方式
$name = "Mom's";
$db = new PDO('mysql:host=localhost;dbname=databasename', $user, $pass);
//establish new connection
$statement = $database->prepare("UPDATE TABLE xyz SET name=?");
$statement->execute(array($name));
这样会更安全。你不需要手动逃脱。
或使用
$msg = mysql_real_escape_string($string);
插入数据之前
答案 1 :(得分:0)
因为当它最终转换为Update语句时,它就像
...somecolname = 'Mum's.....'
,单引号看起来像字符串的结尾。需要用两个单引号替换。在汇总到声明之前
答案 2 :(得分:-1)
在SQL中插入'是危险的,因此会引发错误。它被称为SQL注入。尝试使用像htmlentities()或addslashes()这样的PHP函数来处理'插入之前'。