PHP的MySQL语法问题

时间:2015-06-15 00:31:39

标签: php mysql

运行以下代码时,我似乎遇到以下错误。我不知道为什么虽然因为它在我的本地主机上工作正常,但不是活着:(

  

运行查询ERROR02时出错[您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在附近使用')'在第3行]

这是我正在运行的脚本。它似乎与($id)

有问题
function display_article() {
$db = new mysqli('localhost', 'user', 'pass', 'database');

if($db->connect_errno > 0){
    die('Unable to connect to database [' . $db->connect_error . ']');
}

$id = mysql_real_escape_string($_GET['id']);
$sql = <<<SQL
    SELECT *
    FROM `article_img`
    WHERE `img_id` = ($id)
SQL;

if(!$result = $db->query($sql)){
    die('There was an error running the query ERROR02 [' . $db->error . ']');
}
while($row = $result->fetch_assoc()){
    echo '<div class="article_title">';
    echo '<h2>' . $row['title'] . '</h2>';
        echo '<div class="article_date">';  
        echo 'Posted ' . $row['date']. ''; 
        echo '</div>';
    echo '</div>';

    echo '<div class="article_image">';
    echo '<img src="'.$row['img_1'].'" alt="" width="584" height="368"/>';
    echo '</div>';

    echo '<div class="article_description">';
    echo '<p>' . $row['description'] . '</p>';
    echo '</div>';

    echo '<br /><br />';
    echo '<div class="article_image">';
    echo '<img src="'.$row['img_2'].'" alt="" width="584" height="368"/>'; 
    echo '</div>';
    echo '<br /><br />';
    echo '<div class="article_image">';
    echo '<img src="'.$row['img_3'].'" alt="" width="584" height="368"/>'; 
    echo '</div>';
    echo '<br /><br />';
    echo '<div class="article_image">';
    echo '<img src="'.$row['img_4'].'" alt="" width="584" height="368"/>'; 
    echo '</div>';
    echo '<br /><br />';
    echo '<div class="article_image">';
    echo '<img src="'.$row['img_5'].'" alt="" width="584" height="368"/>'; 
    echo '</div><br />';

}

$id_related = mysql_real_escape_string($_GET['make']);
$sql_related = <<<SQL
    SELECT *
    FROM `article_img`
    WHERE `make` != '$id_related' ORDER BY RAND() DESC LIMIT 2 
SQL;

if(!$result = $db->query($sql_related)){
    die('There was an error running the query ERROR03[' . $db->error . ']');
}
while($row = $result->fetch_assoc()){
echo '<a class="article_related_link" href="/article.php?id='.$row['img_id'].'&make='.$row['make'].'">';
    echo '<div class="article_related">';
            echo '<img src="' . $row['img_url'] . '" width="282" height="174"/>';
    echo '</div>';
echo '</a>';



}
echo '<div class="article_footer">';

echo '</div>';

// Free result set
mysqli_free_result($result);

mysqli_close($db);
}

1 个答案:

答案 0 :(得分:3)

$ id 将不会在HEREDOC块中进行评估。

将您的代码更改为类似的内容以正确评估:

$id = (int) $_GET['id'];
$sql = "
    SELECT *
    FROM `article_img`
    WHERE `img_id` = ($id)
";