LIKE查询PHP文件的问题

时间:2014-12-06 11:15:32

标签: php android mysql where sql-like

我正在开发一个通过php文件连接到sql数据库的Android应用程序。目前我在其中一个队列中遇到类似功能的问题。

以下是问题所在文件的代码:     

$con = mysqli_connect($host,$uname,$pwd,$db) or die("connection failed");

$like = $_REQUEST['like'];

$sql_q = mysqli_query($con,"SELECT `ID`, `Value`, `Value_Complete` FROM `products` WHERE `ID` LIKE '$like'");

if($sql_q)
{
    while($result = mysqli_fetch_assoc($sql_q))
    {
        $output[] = $result;
    }
    if($output)
    {
        print(json_encode($output));
    }
}
else
{
    echo 'Invalid query: ' . mysqli_error() . "\n";
}

mysqli_close($con);
?>

此代码适用于此查询 - SELECT IDValueValue_Complete FROM products WHERE ID LIKE' 11/02 / __ / 00 /%' - 并返回:

[{"ID":"11\/02\/00\/00\/00\/0\/0\/0","Value":"Tradicionais","Value_Complete":""},     
{"ID":"11\/02\/01\/00\/00\/0\/0\/0","Value":"Caipis","Value_Complete":""},
{"ID":"11\/02\/02\/00\/00\/1\/0\/0","Value":"Daiquiri","Value_Complete":""},
{"ID":"11\/02\/03\/00\/00\/1\/0\/0","Value":"Gin Tonico","Value_Complete":""},
{"ID":"11\/02\/04\/00\/00\/1\/0\/0","Value":"Long Island Ice Tea","Value_Complete":""},
{"ID":"11\/02\/05\/00\/00\/1\/0\/0","Value":"Manhattan","Value_Complete":""},
{"ID":"11\/02\/06\/00\/00\/1\/0\/0","Value":"Margarita","Value_Complete":""},
{"ID":"11\/02\/07\/00\/00\/1\/0\/0","Value":"Martini Seco","Value_Complete":""},
{"ID":"11\/02\/08\/00\/00\/1\/0\/0","Value":"Black Russian","Value_Complete":""},
{"ID":"11\/02\/09\/00\/00\/1\/0\/0","Value":"White Russian","Value_Complete":""},
{"ID":"11\/02\/10\/00\/00\/1\/0\/0","Value":"Sex on the Beach","Value_Complete":""},    
{"ID":"11\/02\/11\/00\/00\/1\/0\/0","Value":"Sidecar","Value_Complete":""},
{"ID":"11\/02\/12\/00\/00\/1\/0\/0","Value":"Sakerinha","Value_Complete":""},
{"ID":"11\/02\/13\/00\/00\/1\/0\/0","Value":"Tequila Sunrise","Value_Complete":""},
{"ID":"11\/02\/14\/00\/00\/0\/0\/0","Value":"Vodka","Value_Complete":""}]

相同的查询在phpMyAdmin中返回:

working sql query result

但是,相同的代码不适用于查询 - SELECT IDValueValue_Complete FROM products WHERE ID LIKE' $喜欢&#39 ;.它返回一个空结果集但在phpMyAdmin中返回: not working sql query result

我无法在这里找出问题...即便如此 - SELECT IDValueValue_Complete FROM products WHERE {{1} } LIKE'%' - 当它应该返回所有内容时,不返回任何内容。

你可以帮帮我吗?感谢。

4 个答案:

答案 0 :(得分:0)

%添加到变量

"SELECT `ID`, `Value`, `Value_Complete` FROM `products` WHERE `ID` LIKE '$like%'"

答案 1 :(得分:0)

尝试更改您的查询:

$con = mysqli_connect($host,$uname,$pwd,$db) or die("connection failed");

$like = $_REQUEST['like'];

$sql_q = mysqli_query($con,"SELECT `ID`, `Value`, `Value_Complete` FROM `products` WHERE `ID` LIKE '%".$like."%'");

if($sql_q)
{
    while($result = mysqli_fetch_assoc($sql_q))
    {
        $output[] = $result;
    }
    if($output)
    {
        print(json_encode($output));
    }
}
else
{
    echo 'Invalid query: ' . mysqli_error() . "\n";
}

mysqli_close($con);
?>

答案 2 :(得分:0)

基本上就像在某些工作中一样(=),但它可以让你灵活地使用外卡。 %wild card用于在sql查询中定义有什么东西但不重要。

如果您不在查询中使用%,则表示您正在搜索存储在$ like变量中的相同字符串。

在phpmyadmin中,您不需要使用%。因为phpmyadmin旨在使数据库的使用变得容易。因此,当您在搜索选项中选择时,它会在对数据库应用查询之前自动添加%。

由于这个原因,你会看到这些差异。

答案 3 :(得分:0)

请根据您的要求尝试这个完整的解决方案

SELECT tablename FROM id WHERE FIND_IN_SET('/',$column name);

它使用find_in_Set mysql函数,该函数有2个参数,一个是分隔符,另一个是列名。