Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数据库中的名称匹配_Php_Mysql_String_Mysql Error 1064_Mysql Escape String - Fatal编程技术网

Php 数据库中的名称匹配

Php 数据库中的名称匹配,php,mysql,string,mysql-error-1064,mysql-escape-string,Php,Mysql,String,Mysql Error 1064,Mysql Escape String,我有一个表,我想在其中匹配fname和lname 我的问题是 $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($l

我有一个表,我想在其中匹配
fname
lname

我的问题是

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

问题是,如果我写name
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();
$stmt=$mysqli->prepare('SELECT*
来自用户\朋友\详细信息
其中userId=?和FriendFirstName=?以及FriendLastName=?
和FriendStatusCode=“已验证”和friendId?);
$stmt->bind_参数('issi',$会话['userId',$firstName,$lastName,$fid);
$stmt->execute();
另见:

更新


此外,您可能已经启用了魔引号,您应该。

如果您使用
*\u real\u escape\u string
和MySQLi,您必须使用
MySQLi\u real\u escape\u string
(注意I)。我不是在询问SQL注入,我希望在我的Name@user1765876这两个(SQL注入和变量中的引号)在这种情况下,双方碰巧共享一个共同点。@user1765876您可能想检查是否启用了btw。这是一个纯粹的SQL问题,如果“在Fname中存在”或“在Fname中存在”,我不会得到结果lname@user1765876如果你连这个答案都没有得到任何结果,那么你肯定启用了魔法引号。这将把
'
变成
\'
,并导致不匹配。