0

因此,我一直试图找出我的 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语句时,它会抛出一个错误,指出语法存在问题。这似乎仅在文本中有 ' 时才会发生,例如:

说明:“妈妈的补习网站”

如果我把“妈妈”中的 ' 去掉,变成“妈妈”,那么它会更新得很好!任何人都可以解释它为什么这样做以及解决问题的可能补救措施/代码吗?

提前感谢您的帮助!

戴夫。

4

3 回答 3

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);

在插入数据之前

于 2013-09-29T13:26:25.003 回答
0

因为当它最终转换为 Update 语句时,它会像

...somecolname = 'Mum's.....'

单引号看起来像字符串的结尾。需要用两个单引号替换。在组合成语句之前

于 2013-09-29T13:22:52.333 回答
-1

在 SQL 中插入 ' 很危险,因此会引发错误。它被称为 SQL 注入。尝试使用 htmlentities() 或 addlashes() 等 PHP 函数在插入之前处理 '。

于 2013-09-29T13:20:22.117 回答