Я пытаюсь извлечь данные из функции onkeyup базы данных oracle. Вот мой HTML-код.
<form name="filter_name"action="jqry.php" method="post">
<input class="name" name="name" type="text" id="name">
<input name="submit" type="submit" value="submit" />
</form>
И вот мой код JQuery:
$(function(){
$("#name").keyup(function() {
var name = $(this).val();
var dataString = 'name='+ name;
if(name!='') {
$.ajax({
type: "POST",
url: "connectdb.php",
data: dataString,
cache: false,
success: function(html) {
alert(html);
}
});
}
return false;
});
});
Первоначально я написал запрос, как показано ниже в connectdb.php
<?php
$text = $_POST['name'];
// I have given db connections here
$query="SELECT EMP_NAME FROM EMPLOYEES";
$stid = oci_parse($conn, $query);
oci_execute($stid, OCI_DEFAULT);
echo "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC)) {
echo "<tr>\n";
foreach ($row as $item) {
echo " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : " ") . "</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
oci_free_statement($stid);
oci_close($conn);
?>
Для этого я получаю вывод правильно в предупреждении, как
<table border="1">
<tr>
<td>ABC</td>
</tr>
<tr>
<td>XYZ</td>
</tr>
<tr>
<td>PQR</td>
</tr>
</table>
Но когда я пытаюсь сопоставить имя с переменной POST, т.е. $text
, что я получаю из onkeyup используя LIKE
Оператор, я получаю пустой вывод, хотя они соответствуют имени переменной. Я не могу понять, почему запрос не выполняется, когда я использую запрос ниже.
$query = "SELECT EMP_NAME FROM EMPLOYEES WHERE NAME LIKE '%".$text."%'";
пример, когда я печатаю a
в поле ввода с id="name"
, вывод, который я получаю в тревоге, как показано ниже. То есть я получаю ноль результатов.
<table border="1">
</table>
Для справки вот моя структура таблицы базы данных:
| EMP ID | EMP_NAME |
| 1 | ABC |
| 2 | XYZ |
| 3 | PQR |
Пожалуйста, кто-нибудь, помогите мне, почему я получаю пустые результаты, когда я использую оператор LIKE
использование
"...WHERE LOWER(NAME) like lower('%".$text."%')...."
Причина:
По умолчанию оракул делает регистр Sensitive
поиск. Так что конвертируйте свою строку в более низкое и конвертируйте значение в дБ также в более низкое, а затем сравнивайте.
Других решений пока нет …