用变量进行PHP mysql搜索

时间:2014-08-06 08:14:05

标签: php mysql sql mysqli

我尝试使用变量查询数据库,以检测所选列以及搜索词。

为简单起见,我删除了数据库连接错误处理代码。问题代码是:

$find = mysqli_real_escape_string($dbc, test_input($_POST["find"]));
$field = $_POST["field"];

$data = mysqli_query($dbc, "SELECT * FROM ticket WHERE '$field' = '$find'"); 
//Results
while($result = mysqli_fetch_array($data)) {  

    echo "Result 1" . $result['number']; 
    echo "<br>"; 
    echo "<br>"; 
    echo "Result 2" . $result['description']; 
    echo "<br>"; 
    echo "<br>"; 
    echo "Result 3" . $result['contact']; 
    echo "<br>"; 
    echo "<br>"; 
    echo "Result 4" . $result['assignee']; 
    echo "<br>"; 
    echo "<br>"; 
    echo "Result 5" . $result['priority']; 
    echo "<br>"; 
    echo "<br>"; 

}

$anymatches = mysqli_num_rows($data); 

if ($anymatches == 0) { 
    echo "Sorry, but we can not find an entry to match your query<br><br>"; 
} 

我在文本框中输入一个字词$find)并从下拉菜单($field)中选择我正在搜索的内容,例如我选择了受让人。

即使我在数据库中知道它,我仍然会返回&#34;抱歉,但我们找不到符合您查询的条目&#34;。

但是,如果我将MYSQL查询中的$ field变量更改为实际的列名。示例:

$data = mysqli_query($dbc, "SELECT * FROM ticket WHERE assignee = '$find'"); 

它返回正确的数据。我甚至在执行期间回复$field变量以确保其保持正确的选择,并且确实如此。有什么想法吗?

由于

2 个答案:

答案 0 :(得分:1)

问题是您是否使用引号(')而不是反引号来围绕字段名称。

$data = mysqli_query($dbc, "SELECT * FROM ticket WHERE '$field' = '$find'");

$data = mysqli_query($dbc, "SELECT * FROM ticket WHERE `$field` = '$find'");

$data = mysqli_query($dbc, "SELECT * FROM ticket WHERE $field = '$find'");

您当前的代码主要是尝试查找一个字符串与另一个字符串匹配的行,这将永远不会成为现实。

答案 1 :(得分:0)

一样进行查询
   $data = mysqli_query($dbc, "
                SELECT * FROM ticket 
                WHERE {$field} = '$find'
                ");