Php 如何在in-sql语句中使用like

Php 如何在in-sql语句中使用like,php,sql,sql-like,Php,Sql,Sql Like,您好,我正在使用PHP尝试从数据库检索数据,同时在in语句中循环一个数组,如下所示 $sql2 = "SELECT * FROM pixacour_pixacourt.UserCaseMessages WHERE FavorIDs IN (" ; $count = 0; foreach($followingArray as $value) { if($count==count($followingArray)-1) { $sql2 .= "LIKE";

您好,我正在使用PHP尝试从数据库检索数据,同时在in语句中循环一个数组,如下所示

$sql2 = "SELECT * FROM pixacour_pixacourt.UserCaseMessages WHERE FavorIDs IN  (" ;
    $count = 0;
foreach($followingArray as $value)
{
    if($count==count($followingArray)-1)
    {
        $sql2 .= "LIKE";
        $sql2 .= "%'".$value."'%";
    }
    else
    {
        $sql2 .= "LIKE";
        $sql2 .= "%'".$value."'%,";        
    }
    ++$count;
}
$sql2 .= ")";
我得到这个错误,就是说

“正在尝试获取非对象的属性”


我搞不清楚发生了什么事。如果您能提供任何建议,我将不胜感激。谢谢您的时间。

您不应该在in子句中使用LIKE,但您确实需要用逗号分隔元素。也不需要记录计数。当数组被遍历时,foreach将停止,您可以修剪掉尾随的逗号

$sql2 = "SELECT * FROM pixacour_pixacourt.UserCaseMessages WHERE FavorIDs IN  (" ;
foreach($followingArray as $value)
{
        $sql2 .= "'".$value."', ";        
}
$sql2 = rtrim($sql2,',');
$sql2 .= ");";
如果像Gordon说的那样失败,echo$sql2和语法错误可能会很清楚

如果确实需要使用LIKE和通配符匹配,可以附加多个OR子句,每个$value对应一个OR子句

$sql2 = "SELECT * FROM pixacour_pixacourt.UserCaseMessages WHERE " ;
$whereClause = "";
foreach($followingArray as $value)
{
        $whereClause .= " OR FavorIDs LIKE '%".$value."%' ";        
}
$whereClause = ltrim($whereClause, " OR");
$sql2 .= $whereClause . ";";
2015年9月1日更新

我意识到这段代码中有一个bug,当$followerArray为空时,我们会收到一个MySQL语法错误,因为查询以“WHERE”结尾。这里有一个新版本解决了这个错误:

$sql2 = "SELECT * FROM pixacour_pixacourt.UserCaseMessages" ;
if(count($followingArray) >= 1) {
    $sql2 .= " WHERE";
}
$whereClause = "";
foreach($followingArray as $value)
{
        $whereClause .= " OR FavorIDs LIKE '%".$value."%' ";        
}
$whereClause = ltrim($whereClause, " OR");
$sql2 .= $whereClause . ";";

打印出
$sql2
,然后将其包含在消息中。问题可能很明显。例如,
不在中的
使用的值列表中。我建议用示例数据和所需结果问另一个问题,并解释您正在尝试做什么。我建议修改这个问题,但它现在有了答案,您的更改可能会使答案无效——这是粗鲁的。“尝试获取非对象的属性”意味着SQL查询函数由于语法错误返回
false
。这意味着您在使用结果时没有检查错误。在发布到SO之前,为什么不做这样的基本调试呢?谢谢你所有这些都非常有帮助:)很乐意帮助!祝你好运。