искать имена в базе данных по порядку, а не по уникальности - PullRequest
0 голосов
/ 31 января 2011

Я хотел иметь возможность искать имя / адрес / номер в моей базе данных.Я смог выполнить поиск по уникальному номеру, но если данные не уникальны, это сложно.Я использую 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 ]

2 голосов
/ 31 января 2011

Во-первых, вам нужно изменить свой 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-запрос завершится неудачно, у вас будет представление о том, почему. Вы можете скопировать / вставить инструкцию 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 голос
/ 31 января 2011

Этот запрос mysql не удался

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

изменить на

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

и рассмотрите использование mysql_error()

0 голосов
/ 31 января 2011

Проблема в вашем запросе.Ваш запрос возвращает пустое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...