-1

我正在尝试将一个段落(中间包含一个单引号)插入到数据库中,如下所示。

$rule="**Mobile's** are not allowed into the room...................soon";


mysql_query("insert into table_name (rule) values('$rule')");

在执行该段落未插入的查询时。我已经直接在 Mysql 中使用 SQL 选项进行了尝试。那里显示错误。

有什么建议么..?

谢谢

4

4 回答 4

1

处理此类事情的最佳方法是使用PDO扩展名或MySQLi. 它们旨在防止SQL Injection.

使用示例PDO

$rule = "**Mobile's** are not allowed into the room...................soon";
$stmt = $pdo->prepare("insert into table_name (rule) values(:rule)");
$stmt->execute(array(':rule' => $rule));

我可以给出的最佳链接解释了当一个值包含单引号时查询的中断有多糟糕:

于 2013-05-09T13:03:48.950 回答
1

一些让你思考的问题:

  1. "PHP中的双引号()是什么意思?

  2. 它们对包含变量的字符串有什么影响?

  3. 什么是“输入卫生”?

  4. 什么是“字符转义”?

  5. 什么是 PDO?

此外,最重要的是:

请不要mysql_*在新代码中使用函数。它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。如果您选择 PDO,这里有一个很好的教程

于 2013-05-09T13:00:03.080 回答
0

您可以在将值发送到 Mysql 数据库表之前使用 mysql_real_escape_string()。请检查此链接http://php.net/manual/en/function.mysql-real-escape-string.php

$rule="**Mobile's** are not allowed into the room...................soon";
$rule1=mysql_real_escape_string($rule)
mysql_query("insert into table_name (rule) values('$rule1')");
于 2013-05-09T13:03:35.277 回答
0

利用

$rule = mysql_real_escape_string("**Mobile's** are not allowed into the room...................soon");
于 2013-05-09T12:58:40.743 回答