我希望能够在数据库中的任何一个表中搜索它是名字,姓氏,中间名等等......问题是,我总是从查询得到一个空结果
这是我的尝试
我使用HTML表单搜索用户点击必要的数据。
<table border='0' align='right'>
<tr>
<td >
<select name='SEARCH' id='SEARCH'>
<option value='ID_NO' selected='selected'>ID Number</option>
<option value='FNAME'>First Name</option>
<option value='LNAME' >Last Name</option>
<option value='MNAME'>Middle Name</option>
<option value='DATE'>Birthday</option>
<option value='SEX'>SEX</option>
<option value='AGE'>Age</option>
<option value='STATUS'>Status</option>
<option value='TEL_NO'>Landline Number</option>
<option value='ADDRESS'>Address</option>
<option value='OCCUPATION'>Occupation</option>
<option value='REFERRED_BY '>Referrals</option>
<option value='itResult'>Result</option>
</select>
</td>
<td rowspan =2><input name='SUBMIT' type='SUBMIT' id='SUBMIT' value='Search!'></td>
</tr>
<tr>
<td><input name='INPUT' type='text' id='INPUT'></td>
</tr>
</table>
然后输入的数据将通过此处并检查数据库
<?php
print "<center><H2>Search User</H2></center>";
$ID_CHECK = clean($_POST['chck']);
$SEARCH = clean($_POST['SEARCH']);
$INPUT = clean($_POST['INPUT']);
$result = mysql_query("SELECT * FROM user_info WHERE '$SEARCH' = '$INPUT'" ) or die('Error, query failed');
if(!mysql_num_rows($result)) {
print "<BR>There is no $INPUT in the Database <BR><A HREF ='SearchUser.php'>Go Back</A>";
exit();
}
else {
$row_array = mysql_fetch_array($result, MYSQL_ASSOC);
?>
问题是,我总是得到一个空查询 我认为使用这个是错误的
$result = mysql_query("SELECT * FROM user_info WHERE '$SEARCH' = '$INPUT'" ) or die('Error, query failed');
还有另外一种方法吗?也许JavaScript?
我的清洁功能可以做到这一点......它可以清除我认为的数据值
<?php
function clean($str) {
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
return mysql_real_escape_string($str);
}
?>
答案 0 :(得分:3)
问题是在您的查询中,您正在比较两个字符串。这应该有效:
$result = mysql_query("SELECT * FROM user_info WHERE $SEARCH = '".$INPUT."'") or die('Error, query failed');
我从$ SEARCH中删除了单引号。
答案 1 :(得分:0)
首先,您的clean
函数有什么作用?如果它引用了您的内容,您最终可能会使用“$ SEARCH”获得额外报价。其次,如果您想进行更彻底的搜索,可能需要查看MySQL的LIKE比较。
答案 2 :(得分:0)
尝试使用连接:
$result = mysqli_query($con, "SELECT * FROM userinfo WHERE concat(//add the database rows here) LIKE '%$something%' ");