用PHP搜索数据库

时间:2011-02-01 03:26:13

标签: php mysql

我希望能够在数据库中的任何一个表中搜索它是名字,姓氏,中间名等等......问题是,我总是从查询得到一个空结果

这是我的尝试

我使用HTML表单搜索用户点击必要的数据。

<table border='0' align='right'>
    <tr>
        <td >
            <select name='SEARCH' id='SEARCH'>
                <option value='ID_NO' selected='selected'>ID Number</option>
                <option value='FNAME'>First Name</option>
                <option value='LNAME' >Last Name</option>
                <option value='MNAME'>Middle Name</option>
                <option value='DATE'>Birthday</option>
                <option value='SEX'>SEX</option>
                <option value='AGE'>Age</option>
                <option value='STATUS'>Status</option>
                <option value='TEL_NO'>Landline Number</option>
                <option value='ADDRESS'>Address</option>
                <option value='OCCUPATION'>Occupation</option>
                <option value='REFERRED_BY '>Referrals</option>
                <option value='itResult'>Result</option>
            </select>
        </td>
        <td rowspan =2><input name='SUBMIT' type='SUBMIT' id='SUBMIT' value='Search!'></td>
    </tr>
    <tr>
        <td><input name='INPUT' type='text' id='INPUT'></td>
    </tr>
    </table>

然后输入的数据将通过此处并检查数据库

<?php
    print "<center><H2>Search User</H2></center>";
    $ID_CHECK = clean($_POST['chck']);
    $SEARCH = clean($_POST['SEARCH']);
    $INPUT   = clean($_POST['INPUT']);

    $result = mysql_query("SELECT * FROM user_info WHERE '$SEARCH' = '$INPUT'" ) or die('Error, query failed');
    if(!mysql_num_rows($result)) {
        print "<BR>There is no $INPUT in the Database <BR><A HREF ='SearchUser.php'>Go Back</A>";
        exit();
    }
    else {
        $row_array = mysql_fetch_array($result, MYSQL_ASSOC);
?> 

问题是,我总是得到一个空查询 我认为使用这个是错误的

$result = mysql_query("SELECT * FROM user_info WHERE '$SEARCH' = '$INPUT'" )  or die('Error, query failed');

还有另外一种方法吗?也许JavaScript?

我的清洁功能可以做到这一点......它可以清除我认为的数据值

<?php
    function clean($str) {
        $str = @trim($str);
        if(get_magic_quotes_gpc()) {
            $str = stripslashes($str);
        }
    return mysql_real_escape_string($str);
    }
?>

3 个答案:

答案 0 :(得分:3)

问题是在您的查询中,您正在比较两个字符串。这应该有效:

$result = mysql_query("SELECT * FROM user_info WHERE $SEARCH = '".$INPUT."'")  or die('Error, query failed');

我从$ SEARCH中删除了单引号。

答案 1 :(得分:0)

首先,您的clean函数有什么作用?如果它引用了您的内容,您最终可能会使用“$ SEARCH”获得额外报价。其次,如果您想进行更彻底的搜索,可能需要查看MySQL的LIKE比较。

答案 2 :(得分:0)

尝试使用连接:

$result = mysqli_query($con, "SELECT *  FROM userinfo WHERE concat(//add the database rows here) LIKE '%$something%' ");