2015-02-11 3 views
0

SQL ошибка синтаксиса, PHP MYSQL

$sql = "SELECT post_title, post_body, post_author FROM forum_post WHERE post_id='".$pid."' forum_id='".$id."' AND post_type='o'"; 
 
if($topicPost = $mysql->prepare($sql)) { 
 
    $topicPost->bind_param('ss',$pid,$id); 
 
    $topicPost->bind_result($post_title, $post_body, $post_author); 
 
    $topicPost->execute(); 
 
    $topicPost->store_result(); 
 
} else { 
 
    echo "ErrorinSQLLL, ".$mysql->error; 
 
    exit(); 
 
}

Так что мое заявление SQL-запрос.

Я получаю это напечатано на моей странице:

ErrorinSQLLL, Вы имеете ошибку в вашем синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса использовать вблизи «forum_id =» 1 «» в строке 1

В случае необходимости я могу разместить больше моего кода.

+3

Вы пропустите И здесь "post_id = '$ PID' AND forum_id = '$ ID" – jarlh

+1

'WHERE post_id = '$ PID' forum_id = '$ id'', а затем пытается связать '$ pid' и' $ id' ... но в SQL не существует заполнителей для привязки к ним ... похоже, что у вас есть фундаментальное непонимание связывания переменные, которые делают ваш SQL небезопасным ..... ваш SQL должен быть 'WHERE post_id =? И forum_id =? ' –

ответ

3

Вам не хватает AND по вашему запросу, здесь post_id='$pid' forum_id='$id'.

+1

О, мой ..... Спасибо. –

1

Отсутствующие and в котором условие

... WHERE post_id = " . (int)$pid . " AND forum_id = " . (int)$id . " ... 

идентификаторами число, так что без кавычек.

2

Вы пропустили один AND после post_id ключа:

"SELECT 
    post_title, 
    post_body, 
    post_author 
FROM 
    forum_post 
WHERE 
    post_id = " . $pid . " 
AND 
    forum_id= " . $id . " 
AND 
    post_type = 'o'"; 
Смежные вопросы