2016-02-03 3 views
0
$conn = getConn(); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$sql = "select * from posts where fk_user_id in (select id_user_1 from contacts where id_user_2=:_id) or (select id_user_2 from contacts where id_user_1=:_id) or :_id order by date desc limit 15 offset :_offset"; 
$stmt = $conn->prepare($sql); 
$stmt->bindParam('_id', $id); 
$o = "0"; 
$stmt->bindParam('_offset', $o); 

Ошибка подключения: SQLSTATE [42000]: Ошибка синтаксиса или нарушение прав доступа: 1064 У вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' 0 '' по строке 1PHP PDO не связывает правильно

По какой-то причине он не связывает параметр правильно; если я вручную положу 0 в SQL, все будет работать.

Исправление: я исправил, добавив PDO :: PARAM_INT. $ stmt-> bindParam (': _ offset', $ offset, PDO :: PARAM_INT);

ответ

0

Вы неверно связываете параметры. Это должно быть:

$stmt->bindParam(':_id', $id); 
$offset = 0; 
$stmt->bindParam(':_offset', $offset, PDO::PARAM_INT); 
+0

Это не проблема – alps

+0

@alps. Вы неверно связываете свои параметры. Кроме того, в чем проблема? –

+0

Я так долго связывался с этим в течение нескольких месяцев, и у меня еще не было проблем с ним, я также попытался использовать столбцы, и у меня была такая же ошибка. – alps

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