这个问题在这里已经有了答案:
Formatting a PHP array for an SQL "IN" clause
(7 个回答)
7年前关闭。
这是我的代码:
$newMsg="chinu debasish bitto deba prince's";
//$curTime=date('G');
//if(($curTime >= 9) || ($curTime < 21)){
$chkUname=explode(" ",$newMsg);
echo "SELECT mobile_hash FROM ".CHAT_USER." WHERE username IN(".implode(",",$chkUname).")";
//}
上面的代码我得到:
SELECT mobile_hash
FROM chat_users WHERE username IN(chinu,debasish,bitto,deba)
但我希望每个字符串都带有单引号,例如:
SELECT mobile_hash
FROM chat_users WHERE username IN('chinu','debasish','bitto','deba')
编辑:这个问题不是重复的,请再次检查我的问题和Formatting a PHP array for an SQL “IN” clause
最佳答案
使用 构建格式化的查询字符串值implode .由于您的字符串中有撇号,因此您必须 escape 进行错误和 SQL 注入(inject)攻击的免费查询。
$imp = "'" . implode( "','", mysql_escape_string($chkUname) ) . "'";
echo "SELECT mobile_hash FROM ".CHAT_USER." WHERE username IN($imp)";
更新:
自
mysql
是 deprecated从 PHP 5.6 开始,所以你应该选择 mysqli_*或 PDO .在 mysqli
, 字符串是这样转义的mysqli_real_escape_string($con, $chkUname)
哪里
$con
是 connection对象并创建一个连接对象:$con = mysqli_connect("hoste", "user", "password", "db_name");
关于php - 如何在 PHP 中用单引号(')内爆字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25461289/