Я хотел иметь возможность искать в базе данных в любой таблице, будь то имя, фамилия, имя и т.д. … проблема в том, что я всегда получаю от запроса пустой результат
Это моя попытка
Я использую 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); } ?>
Проблема в том, что в вашем запросе вы сравниваете две строки. Это должно работать:
$result = mysql_query("SELECT * FROM user_info WHERE $SEARCH = '".$INPUT."'") or die('Error, query failed');
Я удалил одиночные котировки из $ SEARCH.
Прежде всего, что делает ваша clean
функция? Если он цитирует ваш контент, вы можете получить дополнительные кавычки с помощью «$ SEARCH». Во-вторых, вы можете взглянуть на сравнение LIKE MySQL, если хотите провести более тщательный поиск.
Попробуйте использовать конкатенацию:
$result = mysqli_query($con, "SELECT * FROM userinfo WHERE concat(//add the database rows here) LIKE '%$something%' ");