繁体   English   中英

SQL喜欢用变量查询吗?

[英]Sql like query with variable?

我有这个功能:

function word($arg){

    echo ''.$arg.'';
    //echoes test

    require ('config.php');

    $requestSQL = mysql_query("SELECT * FROM db where eng LIKE '%$arg%' order by id ASC LIMIT 10", $connection);
    while ($row = mysql_fetch_array($requestSQL))
    {
        echo ''.$row['id'].': '.$row['eng'].'<br>';
    }

}

通过以下方式触发:

$number = $explode[1];
word($number);

但是不会从数据库中回显任何值,一点也没有。 如果我在函数中回显$ arg,它将显示该值。 如果我在sql查询中将“%$ arg%”替换为“%test%”,它将回显正确的值。

'%$ arg%'语法错误吗?

您应该使用适当的连接器

"SELECT * FROM db where eng LIKE concat('%', '$arg', '%') order by id ASC LIMIT 10"

很简单,您所要做的就是: LIKE %{$arg}% 因为我假设$arg是一个文本值。 如果变量是文本值,则必须执行此操作以使其保持工作状态。 您将文本变量包装在{}

另外,从不。 永远使用mysql_* ,您应该转到mysqli_*或PDO / OOP。 这只是个好习惯。

更新资料


您不能在mysql_query("", $connection)引号内使用变量。 相反,请执行以下操作:

$query = "SELECT * FROM db WHERE eng LIKE '%{$arg}%' ORDER BY id ASC LIMIT 10";

// then use this variable as a replacement for the quotes in the mysql_query().    

$set = mysql_query($query, $connection); // like so . . .

// mysql_fetch_assoc() is the same as mysql_fetch_array().

while($row = mysql_fetch_assoc($set)) {
  echo "".$row['id'].": ".$row['eng']."<br>";
}

我是如此愚蠢,实际上是$ explode [1]; 返回正确的值,但源代码中有空行。 所以我不得不使用修剪,现在它可以工作了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM