按顺序搜索数据库中的名称而不是唯一的

时间:2011-01-31 12:48:27

标签: php mysql database

我希望能够在我的数据库中搜索姓名/地址/号码。我能够进行唯一的数字搜索,但如果数据不是唯一的,那么很难。我正在使用MySQL / XAMPP fyi。

这是我尝试通过开始制作表单

echo "<div style='text-align:right'>
            <form action='DisplayThisName.php' method='POST'>
            <Table border='0' align='right'>
            <tr>
                <td ><font size='-3'>Name Search</font></td>
                <td rowspan =2><input type='hidden' name='chck' id='chck' value='1'><input name='SUBMIT' type='SUBMIT' id='SUBMIT' value='Search!'></td>
            </tr>
            <tr>
                <td><input name='FNAME' type='text' id='FNAME'></td>
            </tr>
            </table><br>
            </FORM> </div>";

然后我检查通过这里的数据

    <?php
        print "<center><H2>Display User</H2></center>";
        $ID_CHECK = clean($_POST['chck']);
        if($ID_CHECK == '1')
            $FNAME   = clean($_POST['FNAME']);
        else
            $FNAME   = $_SESSION['SESS_FIRST_NAME'];
        $result = mysql_query("SELECT * FROM user_info WHERE FNAME = $FNAME" );
        if(!mysql_num_rows($result)) {
            print "<BR>There is no such user with the user number of $FNAME <BR><A HREF ='DisplayUserwLink.php'>Go Back</A>";
            exit();
        }
        else {
            $row_array = mysql_fetch_array($result, MYSQL_ASSOC);
    ?>

lastly I will show it here

<TABLE BORDER=1 CELLPADDING=5 CELLSPACING=5>
            <TR>
                <TD>User No</TD>
                <TD><INPUT TYPE="TEXT" NAME="ID_NO" VALUE="<?php print "{$row_array['ID_NO']}" ?>" READONLY></TD>
            </TR>
            <TR>
                <TD>Last Name</TD>
                <TD><INPUT TYPE="TEXT" NAME="LNAME" VALUE="<?php print "{$row_array['LNAME']}" ?>" READONLY></TD>
            </TR>
            <TR>
                <TD>First Name</TD>
                <TD><INPUT TYPE="TEXT" NAME="FNAME" VALUE="<?php print "{$row_array['FNAME']}" ?>" READONLY></TD>
            </TR>
            <TR>
                <TD>Middle Name</TD>
                <TD><INPUT TYPE="TEXT" NAME="MNAME" VALUE="<?php print "{$row_array['MNAME']}" ?>" READONLY></TD>
            </TR>
            <TR>
                <TD>Date</TD>
                <TD><INPUT TYPE="TEXT" NAME="DATE" VALUE="<?php print "{$row_array['DATE']}" ?>" READONLY></TD>
            </TR>
            <TR>
                <TD>Age</TD>
                <TD><INPUT TYPE="TEXT" NAME="AGE" VALUE="<?php print "{$row_array['AGE']}" ?>" READONLY></TD>
            </TR>
            <TR>
                <TD>Sex</TD>
                <TD><INPUT TYPE="TEXT" NAME="SEX" VALUE="<?php print "{$row_array['SEX']}" ?>" READONLY></TD>
            </TR>
            <TR>
                <TD>Status</TD>
                <TD><INPUT TYPE="TEXT" NAME="STATUS" VALUE="<?php print "{$row_array['STATUS']}" ?>" READONLY></TD>
            </TR>
            <TR>
                <TD>Tel.#</TD>
                <TD><INPUT TYPE="TEXT" NAME="TEL_NO" VALUE="<?php print "{$row_array['TEL_NO']}" ?>" READONLY></TD>
            </TR>
            <TR>
                <TD>Address</TD>
                <TD><INPUT TYPE="TEXT" NAME="ADDRESS" VALUE="<?php print "{$row_array['ADDRESS']}" ?>" READONLY></TD>
            </TR>
            <TR>
                <TD>Occupation</TD>
                <TD><INPUT TYPE="TEXT" NAME="OCCUPATION" VALUE="<?php print "{$row_array['OCCUPATION']}" ?>" READONLY></TD>
            </TR>
            <TR>
                <TD>Referred by</TD>
                <TD><INPUT TYPE="TEXT" NAME="REFERRED_BY" VALUE="<?php print "{$row_array['REFERRED_BY']}" ?>" READONLY></TD>
            </TR>
            <TR>
                <TD>Is Color-Blind?</TD>
                <TD><INPUT TYPE="TEXT" NAME="itResult" VALUE="<?php print "{$row_array['itResult']}" ?>" READONLY></TD>
            </TR>
        </TABLE>

clean.php就是这个

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

检查数据时,我在此部分收到错误

 if(!mysql_num_rows($result)) {

警告:mysql_num_rows():提供的参数不是有效的MySQL结果资源

我做错了什么? :(

3 个答案:

答案 0 :(得分:2)

首先,您需要更改您的PHP代码:

$result = mysql_query("SELECT * FROM user_info WHERE FNAME = $FNAME" );
if(!mysql_num_rows($result)) {

到这个

$sql = "SELECT * FROM user_info WHERE FNAME = $FNAME";
$result = mysql_query($sql);
if(mysql_error())
{
    die(mysql_error() .": $sql");
}
if(!mysql_num_rows($result)) {

现在当你的sql查询失败时,你会知道为什么。您可以在shell提示符下将sql语句复制/粘贴到Mysql Monitor中,然后在那里运行查询。

您的查询可能会失败,因为$ FNAME为空,并且您没有在$ sql语句中引用它。您可以这样做。

因此给mysql的查询错误如下:

SELECT * FROM user_info WHERE FNAME = ;

而不是没有错误,没有找到任何行,如下所示:

SELECT * FROM user_info WHERE FNAME = '';

现在你看到你的php会更好:

$sql = "SELECT * FROM user_info WHERE FNAME = '$FNAME'";

还是更好

$sql = "SELECT * FROM user_info 
        WHERE FNAME = '". mysql_real_escape_string($FNAME)."'";

答案 1 :(得分:1)

此mysql查询失败

mysql_query("SELECT * FROM user_info WHERE FNAME = $FNAME" )

将其更改为

mysql_query("SELECT * FROM user_info WHERE FNAME = '$FNAME'" )

并考虑使用mysql_error()

答案 2 :(得分:0)

您的查询中存在问题。您的查询返回空值。