2015-02-11 114 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服務器版本使用附近的正確語法手冊第1行

如果需要,我可以發佈更多的我的代碼「forum_id =」 1「」。

+3

你會錯過的,在這裏 「POST_ID = '$ PID' AND forum_id = '$ ID'」 – jarlh 2015-02-11 10:40:57

+1

'WHERE POST_ID = '$ PID' forum_id = '$ id'',然後嘗試綁定'$ pid'和'$ id'以及......但是在SQL中沒有佔位符將它們綁定在一起......看起來好像你對綁定有根本性的誤解使你的SQL不安全的變量.....你的SQL應該是WHERE post_id =? AND forum_id =?' – 2015-02-11 10:43:00

回答

3

您的查詢缺失AND,此處post_id='$pid' forum_id='$id'

+1

哦,我的.....謝謝。 – 2015-02-11 10:41:27

1

缺少and在條件

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

ID是數字,因此不包括引號。

2

你錯過了一個ANDpost_id鍵後:

"SELECT 
    post_title, 
    post_body, 
    post_author 
FROM 
    forum_post 
WHERE 
    post_id = " . $pid . " 
AND 
    forum_id= " . $id . " 
AND 
    post_type = 'o'";