2013-08-13 2 views
-1

Я получаю эти странные ошибки, и я был вверх и вниз по коду, комментируя и переписывая, и отправлял все игры. Возможно, вы, ребята, будете видеть, что я не вижу:Заявление Mysqli LIKE не работает

$mysqli = new mysqli('host','login','passwd','db'); 
if($mysqli->connect_errno > 0){ die('Cannot connect: '. $mysqli->connect_error); } 
// See if there is one term or multiple terms 
if (count($search) == 1) { 
// If one term, search for that 
$like = $search[0]; 
$stmt = "SELECT 
      gsa_committees.id, 
      gsa_committees.committee, 
      gsa_committees.appointer, 
      gsa_committees.representatives, 
      gsa_committees.contact, 
      gsa_committees.category, 
      gsa_committees.attachments, 
      gsa_committees.labels, 
      gsa_committee_reports.committee, 
      gsa_committee_reports.title, 
      gsa_committee_reports.author, 
      gsa_committee_reports.link, 
      gsa_funds.id, 
      gsa_funds.fund, 
      gsa_funds.attachments, 
      gsa_funds.labels, 
      gsa_meeting_minutes.title, 
      gsa_meeting_minutes.link, 
      gsa_officers.office, 
      gsa_officers.dept, 
      gsa_officers.name, 
      gsa_representatives.program_dept, 
      gsa_representatives.representatives, 
      gsa_representatives.alternate 
     FROM 
      gsa_committees, 
      gsa_committee_reports, 
      gsa_funds, 
      gsa_meeting_minutes, 
      gsa_officers, 
      gsa_representatives 
     WHERE 
      (gsa_committees.committee LIKE $like) AND 
          gsa_committees.committee IS NOT NULL"; 
} 
if(!$result = $mysqli->query($stmt)){ die('Bad query: '. $mysqli->error); } 

Это дает мне сообщение об ошибке:

Bad query: 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 '%ARCHAC%) AND gsa_committees.committee IS NOT NULL' at line 34 

Что я знаю, это не так. Если я изменю что-лас части только это:

WHERE gsa_committees.committee LIKE $like"; 

Я получаю сообщение об ошибке:

Bad query: 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 '%ARCHAC%' at line 34 

Везде я смотрел, строка "%".search."%", кажется, правильный метод, но мой сервер Безразлично Кажется, это нравится здесь.

Интересное примечание стороны: У меня другое заявление LIKE, работающее на другой странице на том же сервере, это просто не будет работать по какой-то причине.

Спасибо!

+0

Каково значение переменной $ like, которую вы получаете? – Maximus2012

+0

Возможно, есть {и} вокруг '$ like'? – Markasoftware

+0

^^ и правильно ли он указан –

ответ

0

Попробуйте разместить одинарные кавычки вокруг вашего поискового запроса ($ like variable).

, например: (gsa_committees.committee LIKE '$ как')

+0

Когда я помещаю одиночную цитату вокруг $ like, страница зависает (на странице проводки) и даже не отображает; нет пустой белой страницы или сообщения об ошибке. – Kaceykaso

+0

Положив дикую карту (%) перед ключевым словом, которое вы ищете, вы по существу разбиваете индекс. Это приводит к очень низкой производительности. Поэтому вместо этого используйте процент в конце ключевого слова. то есть 'поиск%' вместо '% search%' –

+0

Это не имеет никакого значения. Я ничего не получаю, никаких сообщений об ошибках или результатов. – Kaceykaso

0

Вам нужно обернуть переменную в кавычки, как за работу:

WHERE gsa_committees.committee LIKE '$like'; 

См справочную документацию по String Comparison Function.

+0

Это не имело никакого значения. – Kaceykaso

+0

@Kaceykaso, вы можете распечатать этот запрос и опубликовать вывод вместе с полным сообщением об ошибке. – vee

0

это выглядит как недостающие кавычки:

"WHERE gsa_committees.committee LIKE '$like' "; 
+0

Нет, это не работает, к сожалению :( – Kaceykaso

-2

Хорошо, я получил его. Ответ на этот пост решить мою проблему: MYSQLI SQL query over multiple tables fail

Как только я назначил таблицы t1, t2, и т.д., и сделал INNER JOIN, результаты пришли как и ожидалось, с% $ поиск% или $ поиска. Спасибо всем!

+0

Это еще одна проблема. –

Смежные вопросы