@Punn1k

Ошибка [1064] You have an error in your SQL syntax?

Добрый день. На сайте (битрикс) появилась следующая ошибка:

MySQL Query Error: SELECT * FROM b_checklist WHERE(1=1 AND ( REPORT='NArray ) ) ORDER BY ID desc [[1064] 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 ''NArray ) ) ORDER BY ID desc' at line 4]


Часть запроса, на которую, как я понял, ругается:

$arSqlWhereStr = '';
		if (is_array($arFilter) && count($arFilter)>0)
		{
			$arSqlWhere = [];
			$arSqlFields=array("ID", "REPORT", "HIDDEN", "SENDED_TO_BITRIX");
			foreach($arFilter as $key => $value):
				if (in_array($key, $arSqlFields))
					$arSqlWhere[] = $key."='".$DB->ForSql($value).[];
			endforeach;
			$arSqlWhereStr = GetFilterSqlSearch($arSqlWhere);
		}

		$strSql = "SELECT * FROM b_checklist";
		if ($arSqlWhereStr <> '')
			$strSql.= " WHERE" .$arSqlWhereStr;
			$strSql.= " ORDER BY ID desc ";
		$arResult = $DB->Query($strSql, false,"FILE: ".__FILE__."<br> LINE: ".__LINE__);

		return $arResult;
	}


В чем ошибка?
Заранее спасибо.
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
@Sowander
$arSqlWhere[] = $key."='".$DB->ForSql($value).[];
вот косяк
на кой черт делать вот так .[]?
здесь сказано массиву превратится в строку, что он и сделал, а чуток до этого $key."='", мы наблюдаем лишнюю одинарную кавычку которая не имеет закрывающейся подруги
Итог
' равно '
$value равно строка N
[] равно строка Array
в результате 'NArray

Пиши вот так глядишь поможет
$arSqlWhere[] = $key."='".$DB->ForSql($value)."'";
или
$arSqlWhere[] = $DB->ForSql($key."=".$value);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Snewer
Проблема в содержимом переменной $arSqlWhereStr
Ответ написан
Melkij
@Melkij
PostgreSQL DBA
Ну я допустим совершенно солидарен с СУБД. Что вы хотели вот тут сказать?
AND ( REPORT='NArray )

не представляю. Найдите откуда это пришло и исправьте.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы