用变量查询的sql?

时间:2016-09-08 20:11:58

标签: php sql

我有这个功能:

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查询中替换:&#39;%$ arg%&#39;使用&#39;%test%&#39;,它会回显正确的值。

&#39;%$ arg%&#39;语法错了?

3 个答案:

答案 0 :(得分:1)

你应该使用正确的concat

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

答案 1 :(得分:0)

非常简单,您所做的只是: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>";
}

答案 2 :(得分:0)

我真是太蠢了,实际上是爆炸式的[1];返回正确的值但源代码中有一个空行。所以我不得不使用修剪,现在它可以工作。