当我在查询中使用单撇号(')时,MySQL查询无效

时间:2015-05-19 06:12:01

标签: php mysql

我正在使用PHP和MySQl创建简单的表单。但是当我在表单中的一个文本框中输入撇号符号(')作为输入时,查询不起作用。由于撇号符号,它不会向数据库插入任何记录。

以下是使用PHP进行MySQL查询的简单示例。

mysql_query("insert into users (username,passwd,name,mobile) values ('$username','$passwd','$name','$mobile')")

4 个答案:

答案 0 :(得分:0)

你需要转义输入数据,当你使用mysql时,你需要mysql_real_escape_string函数。

mysql_query("insert into users (username,passwd,name,mobile) values (
    '" . mysql_real_escape_string($username) . "', 
    '" . mysql_real_escape_string($passwd) . "',
    '" . mysql_real_escape_string($name) . "',
    '" . mysql_real_escape_string($mobile) . "')"
);

作为奖励,您可以获得针对SQL注入的保护。

答案 1 :(得分:0)

因为有很多过时的答案,我会通过使用PDO给你一个干净的(呃)解决方案。你应该毫不费力地转向PDO或mysql i ,因为你的代码很可能会在几个月内/不到一年内崩溃(一旦PHP7退出):

$pdo = new PDO('mysql:...');

$stmnt = $pdo->prepare("insert into users (username,passwd,name,mobile) values (?, ?, ?, ?)");

$stmnt->execute(array($username, $passwd, $name, $mobile));

答案 2 :(得分:0)

由于字段用户名,密码,手机不包含单引号,您无需使用任何功能从表单数据中删除引号,您只需使用以下查询:

mysql_query("insert into users (username,passwd,name,mobile) values ('".$username."','".$passwd."','".$name."','".$mobile."')")

或者您可以根据需要从表单数据中删除引号。

答案 3 :(得分:-2)

使用htmlspecialchars()函数对单引号进行编码并插入到数据库中,并在获取该数据时使用htmlspecialchars_decode()函数,该函数将解码为单引号。