SQL更新查询赢得';我不能用PHP工作
因此,我一直在试图找出我的更新SQL查询的问题所在,并搜索了这里的问题,结果发现问题在于数据库表中正在更新的实际文本。我的PHP应用程序是一个简单的应用程序,只用于添加简单的网站链接,并在表(链接)中添加说明,如下所示:SQL更新查询赢得';我不能用PHP工作,php,mysql,sql-update,Php,Mysql,Sql Update,因此,我一直在试图找出我的更新SQL查询的问题所在,并搜索了这里的问题,结果发现问题在于数据库表中正在更新的实际文本。我的PHP应用程序是一个简单的应用程序,只用于添加简单的网站链接,并在表(链接)中添加说明,如下所示: <form action="update.php" method="post"> <p><input type="text" name="description" value="<?php echo($desc); ?>" /&g
<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>
在SQL中插入's'会引发错误,这是危险的。它被称为SQL注入。尝试使用诸如htmlentities()或addslashes()之类的PHP函数来处理“before insertion.”,因为当它最终转换为Update语句时
...somecolname = 'Mum's.....'
单引号看起来像字符串的结尾。需要替换为两个单引号。在将它们组合到语句中之前,请使用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);
在插入数据之前如果您使用mysql库,请使用mysql real escape string。在update.phpha中发布您的代码您查看了最终生成的HTML吗?SQL注入并不是简单地在SQL中插入一个'
。。。插入一个“
是非常有效的,但必须对其进行转义,无论是在代码中手动转义,还是通过使用准备好的语句转义。感谢您提供的信息,它非常有效!非常感谢!