PHP и MYSQL: почему mysql не может читать! Пусто?

0

Я пытаюсь найти несколько полей в базе данных, где пользователь также может искать только один вход. Но теперь проблема заключается в том, что 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_
  • 0
    SQL не имеет к этому никакого отношения. Мы также не можем сказать, так как вы не добавили, как вы заполняете эти переменные внутри !empty
  • 0
    Какова точная ошибка?
Показать ещё 18 комментариев
Теги:

1 ответ

0

Вам нужно опустить другую часть вашего условия 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'

который возвратит ошибку, когда эти переменные будут изменены с их текущими значениями.

  • 0
    Пожалуйста, объясните, почему вы бы поставили так много пробелов. Php удаляет пустые места, если они не указаны в кавычках

Ещё вопросы

Сообщество Overcoder
Наверх
Меню