Я пытаюсь найти несколько полей в базе данных, где пользователь также может искать только один вход. Но теперь проблема заключается в том, что sql не хочет читать (! Empty) в if else condition (если я просто хочу искать 1 вход). BUt, то, если я заполню все поле поиска, оно отобразится хорошо. Пожалуйста, исправьте, если я ошибаюсь. TQSM!
так, вот мой код:
if(!empty($_POST['search4']))
{
$tarikh = $_POST['tahun'];
$tempat= $_POST['tempat'];
$sesi = $_POST['sesi'];
$status = $_POST['status'];
echo $tarikh;
echo $tempat;
$field = array($tarikh,$tempat,$sesi,$status);
$conditions = array();
foreach($field as $fields)
{
if(isset($_POST[$fields]))
{
$conditions[] = "'$fields' LIKE '%".mysql_real_escape_string($_POST[$fields])."%'";
}
}
$query = "SELECT * FROM tempahanbilik WHERE status!='BELUM DIPROSES' AND kosong = 'tidak' AND MONTH(tarikh) = 5 AND YEAR(tarikh) = YEAR(CURDATE()) AND YEAR(tarikh2) = YEAR(CURDATE()) ";
if(count($conditions>0))
{
$query .="WHERE" .implode('OR',$conditions);
}
$result = $mysqli->query($query) or die($mysqli->error._LINE_);
$total = $result->num_rows;
if($total>0)
{
$total =1;
while($row = $result->fetch_assoc())
{
$kp = $row['PenggunanoKP'];
$a = "SELECT * FROM pengguna WHERE PenggunanoKP = '$kp'";
$results = $mysqli->query($a) or die($mysqli->error._LINE_);
$rows = $results->fetch_assoc();
//display the informations
}
}
else
{
echo"
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>\n";
}
появится сообщение об ошибке:
Notice: Use of undefined constant _LINE_ - assumed '_LINE_' in C:\xampp\htdocs\booking\search.php on line 106
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE' at line 1_LINE_
Вам нужно опустить другую часть вашего условия if, когда вы уже используете !empty
Из этого:
if($tarikh && !empty($tarikh))
{
$query .="AND YEAR(tarikh) = $tarikh AND YEAR(tarikh2) = $tarikh";
}
if($tempat && !empty($tempat))
{
$query .="AND tempat = '$tempat'";
}
if($sesi && !empty($sesi))
{
$query .="AND masa = '$sesi'";
}
if($status && !empty($status))
{
$query .="AND status = '$status'";
}
К этому:
if(!empty($tarikh))
{
$query .=" AND YEAR(tarikh) = $tarikh AND YEAR(tarikh2) = $tarikh ";
}
if(!empty($tempat))
{
$query .=" AND tempat = '$tempat' ";
}
if(!empty($sesi))
{
$query .=" AND masa = '$sesi' ";
}
if(!empty($status))
{
$query .=" AND status = '$status' ";
}
Также добавьте пробел перед AND
как ваш запрос будет выглядеть так:
AND YEAR(tarikh) = $tarikh AND YEAR(tarikh2) = $tarikhAND tempat = '$tempat'AND masa = '$sesi'
который возвратит ошибку, когда эти переменные будут изменены с их текущими значениями.
!empty