У меня возникли проблемы с моей формой поиска в базе данных. По большей части страница работает нормально, но я получаю две ошибки.Ошибка запроса «неверный идентификатор»
Внимание: ociexecute() [function.ociexecute]: ОР-00904: * $ search_term *: неверный идентификатор в * */search_results.php на линии 53
Внимание: ocifetch() [функция. ocifetch]: ORA-24374: определение не выполняется до извлечения или выполнения и выборки в **/search_results.php в строке 70
Я прокомментировал соответствующие номера строк. Если кто-то может сказать мне, почему это происходит, я бы очень признателен :)
Edit: Забыл не говоря, в таблице отображается ничего, несмотря на ввод условия поиска, которые должны получить результаты
Edit 2: Когда запрос изменен на SELECT * FROM Телефоны, он работает нормально. Это должно быть связано с запросом.
<?php
$search_term = $_POST['search_box'];
/* Set oracle user login and password info */
$dbuser = "**"; /* your login */
$dbpass = "**"; /* your oracle access password */
$db = "**";
$connect = OCILogon($dbuser, $dbpass, $db);
if (!$connect) {
echo "An error occurred connecting to the database";
exit;
}
/* build sql statement using form data */
$query = "SELECT * FROM Phones WHERE Name LIKE ".$search_term;
/* check the sql statement for errors and if errors report them */
$stmt = OCIParse($connect, $query);
echo "SQL: $query<br>";
if(!$stmt) {
echo "An error occurred in parsing the sql string.\n";
exit;
}
OCIExecute($stmt); //line 53
?>
<h1 class="green">PHP and Oracle databases</h1>
<h4>Table: <em>Phones</em></h4>
<div align="center">
<table width="850" border="0" bgcolor="#339933" cellpadding="5" cellspacing="1">
<tr bgcolor="#006633">
<td width="75">ID</td>
<td width="75">Name</td>
<td width="100">Brand</td>
<td width="75">Photo</td>
</tr>
<?php
// Display all the values in the retrieved records, one record per row, in a loop
while(OCIFetch($stmt)) { //line 70
// Start a row for each record
echo("<tr valign=top bgcolor=#ccffcc>");
// Output fields, one per column
// Drainage value in column one
$fg1 = OCIResult($stmt,"ID"); //"ID number";
echo("<td width=75>");
echo ($fg1);
echo("</td>");
// Aspect value in column two
$fg2 = OCIResult($stmt,"NAME");//"Name of product";
echo("<td width=75>");
echo ($fg2);
echo("</td>");
// Temperature value in column three
$fg3 = OCIResult($stmt,"BRAND");//"Brand of product";
echo("<td width=75>");
echo ($fg3);
echo("</td>");
// Height value in column four
$fg4 = OCIResult($stmt,"PHOTO");//"Photo file path";
echo("<td width=75>");
echo ($fg4);
echo("</td>");
// End the row
echo("</tr>");
}
// Close the connection
OCILogOff ($connect);
?>
Я предполагаю, что ваша команда SQL нуждается в кавычки вокруг '$ search_term'. – RBarryYoung
@RBarryYoung Я пробовал это, это не имеет значения – SuperDicko
Первое сообщение об ошибке, которое я написал в описании, говорит «$ search_term» вместо $ search_term. Что-то, что следует отметить, когда запрос изменен на SELECT * FROM Phones, он отлично работает. Это должно быть связано с запросом. – SuperDicko