php - 数据库中的匹配名称

标签 php mysql string mysql-error-1064 mysql-escape-string

我有一个表,我想在其中匹配fnamelname
我的问题是

$result = $mysqli->query('SELECT * FROM user_friend_detail WHERE userId = "'.$_SESSION["userId"].'" AND FriendFirstName = "'.mysql_real_escape_string($firstName).'" AND FriendLastName = "'.mysql_real_escape_string($lastName).'"   AND   FriendStatusCode="verified" AND friendId!='.$fid.' ')  or die($mysqli->error);

问题是如果我写的名字Joh'nny,'的名字不匹配,我如何解决这个问题?

最佳答案

因为您已经在使用mysqli,所以最好使用准备好的语句,这样就不必担心是否要进行正确的转义:

$stmt = $mysqli->prepare('SELECT * 
    FROM user_friend_detail 
    WHERE userId = ? AND FriendFirstName = ? AND FriendLastName = ?   
      AND   FriendStatusCode="verified" AND friendId <> ?');

$stmt->bind_param('issi', $_SESSION['userId'], $firstName, $lastName, $fid);
$stmt->execute();

另请参见:mysqli::prepare()
更新
此外,您可能启用了magic quotes,您应该switch it off

关于php - 数据库中的匹配名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20643566/

相关文章:

php - 尝试制作某种类型的 IF mySQL 语句

php - PHP 7.1 和 PHP 7.2 中的 PDO::PARAM_INT 行为

mysql - 从 MySQL 表中删除唯一约束

c - 迭代 C 字符串不起作用

c# - 需要在c#中获取字符串中 "word"之后的字符串

php - html 更改提交按钮值

PHP SimpleXML asXML 写入ANSI编码文件

mysql - 如何从生产 MySQL 中删除大量行/数据

MYSQL:从子查询where

c++ - 在 C++ 中将字符串转换为 int 的问题