我希望能够在我的数据库中搜索姓名/地址/号码。我能够进行唯一的数字搜索,但如果数据不是唯一的,那么很难。我正在使用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结果资源
我做错了什么? :(答案 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)
您的查询中存在问题。您的查询返回空值。