我希望能够在我的数据库中搜索名称/地址/号码。我可以做一个唯一的号码搜索,但如果数据不是唯一的,那就很难。我正在使用MySQL/XAMPP供参考。
这是我的一些尝试,通过开始制作一个表单
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结果资源
我做错了什么?
发布于 2011-01-31 21:00:21
首先,你需要修改你的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监视器中,并在那里运行查询。
查询失败的原因可能是$FNAME为空,并且您没有在$sql语句中正确地引用它。
因此,提供给mysql的查询错误如下:
SELECT * FROM user_info WHERE FNAME = ;而不是设置为on,它没有错误,也没有找到行,如下所示:
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)."'";发布于 2011-01-31 20:54:17
此mysql查询失败
mysql_query("SELECT * FROM user_info WHERE FNAME = $FNAME" )将其更改为
mysql_query("SELECT * FROM user_info WHERE FNAME = '$FNAME'" )并考虑使用mysql_error()
发布于 2011-01-31 20:54:05
您的查询中存在问题。您的查询返回空值。
https://stackoverflow.com/questions/4851046
复制相似问题