【问题标题】:LIKE Clause not working due to php variable由于 php 变量,LIKE 子句不起作用
【发布时间】:2013-04-16 07:33:31
【问题描述】:

这是我的代码....尝试echo the $sql,但它显示'%Search%'...但我想将其用作$Search ..请帮助...

以下是我的整个搜索代码...

if(isset($_POST['search']))

 {

$search=$_POST['search'];

$criteria=$_POST['criteria'];

$table='alumni';

mysql_real_escape_string($search);

if($criteria=='ALL')

{

$sql="SELECT UNAME FROM `alumni` ";

$result=mysql_query($sql); 

if (!$result) {

die('Invalid query: ' . mysql_error());

}

while ($row=mysql_fetch_array($result))

{

echo"<tr><td><a>".$row['UNAME']."</a></td></tr>"; 

}

}

                                    if($criteria=='UNAME' || $criteria=='FNAME' || $criteria=='BATCH')

{

//echo $criteria;

$sql="SELECT UNAME FROM `alumni` WHERE ".$criteria." LIKE '%".$search."%'";

//echo $sql;

$result=mysql_query($sql); 

if (!$result) {

die('Invalid query: ' . mysql_error());

}

while ($row=mysql_fetch_array($result))

{

echo"<tr><td><a>".$row['UNAME']."</a></td></tr>"; 

}

}


}

?>

【问题讨论】:

  • 不要使用mysql_* 函数,它们已被弃用,请改用mysqli_*
  • 请使用 mysqli_ 或 PDO 而不是 mysql_ 扩展,因为它已被弃用,而且不太安全
  • 如果你打印 $search var,你会得到字符串'Search'?例如,如果您输入条件“FNAME”并搜索“文本”,您的 sql 会是什么样子?
  • @BojanKovacevic...它显示有关搜索条件的用户名...上面的代码适用于 $criteria==ALL..它无法显示以下 if 条件的任何结果……!!请帮忙..!!

标签: php search sql-like


【解决方案1】:

通过测试上面的代码似乎没有错,如果你通过search=Test你得到:

SELECT UNAME FROM `alumni` WHERE FNAME LIKE '%Test%'

如果你总是...

SELECT UNAME FROM `alumni` WHERE FNAME LIKE '%Search%'

...无论您在搜索表单中填写的值如何,都表明该表单的工作方式或发布数据的组合方式存在问题。您在上面发布的代码虽然已经过时,但可以按照您对搜索数据库的代码的预期工作。

如果您可以发布有关如何调用或使用此脚本的更多信息,您可能会从某人那里得到更准确的答案。

【讨论】:

    【解决方案2】:

    如果你使用双引号,你可以把你的变量放在字符串中而不用关闭它们。

    试试:

    $sql="SELECT UNAME FROM `alumni` WHERE $criteria LIKE '%$search%'";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 2019-04-30
      相关资源
      最近更新 更多