首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在数据库中按顺序搜索姓名,而不是唯一的

问在数据库中按顺序搜索姓名,而不是唯一的
EN

Stack Overflow用户
提问于 2011-01-31 20:48:27
回答 3查看 1.5K关注 0票数 0

我希望能够在我的数据库中搜索名称/地址/号码。我可以做一个唯一的号码搜索,但如果数据不是唯一的,那就很难。我正在使用MySQL/XAMPP供参考。

这是我的一些尝试,通过开始制作一个表单

代码语言:javascript
复制
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>";

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

代码语言:javascript
复制
    <?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是这样的

代码语言:javascript
复制
<?php
    function clean($str) {
    $str = @trim($str);
    if(get_magic_quotes_gpc()) {
        $str = stripslashes($str);
    }
    return mysql_real_escape_string($str);
    }
?>

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

代码语言:javascript
复制
 if(!mysql_num_rows($result)) {

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

我做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-31 21:00:21

首先,你需要修改你的php代码:

代码语言:javascript
复制
$result = mysql_query("SELECT * FROM user_info WHERE FNAME = $FNAME" );
if(!mysql_num_rows($result)) {

到这个

代码语言:javascript
复制
$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监视器中,并在那里运行查询。

查询失败的原因可能是$FNAME为空,并且您没有在$sql语句中正确地引用它。

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

代码语言:javascript
复制
SELECT * FROM user_info WHERE FNAME = ;

而不是设置为on,它没有错误,也没有找到行,如下所示:

代码语言:javascript
复制
SELECT * FROM user_info WHERE FNAME = '';

现在你可以看到你的php会更好,如下所示:

代码语言:javascript
复制
$sql = "SELECT * FROM user_info WHERE FNAME = '$FNAME'";

更好的是

代码语言:javascript
复制
$sql = "SELECT * FROM user_info 
        WHERE FNAME = '". mysql_real_escape_string($FNAME)."'";
票数 2
EN

Stack Overflow用户

发布于 2011-01-31 20:54:17

此mysql查询失败

代码语言:javascript
复制
mysql_query("SELECT * FROM user_info WHERE FNAME = $FNAME" )

将其更改为

代码语言:javascript
复制
mysql_query("SELECT * FROM user_info WHERE FNAME = '$FNAME'" )

并考虑使用mysql_error()

票数 1
EN

Stack Overflow用户

发布于 2011-01-31 20:54:05

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4851046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档