嗨,我已经写了这段代码,以便从url中获取新闻id,并显示存储在mysql中的id的新闻结果。我不知道我做错了什么。但是我得到了任意的输出。我还测试了我的查询在mysql中运行良好。我正在做一个小错误,这是无法识别可能是语法或引号某处。谢谢。这是我的网址:
http://autodo/admin/news.php?id=2043
下面是我的代码:
<?php
$ID=$_GET['id'];
$sql=" SELECT DISTINCT ad_news.datum, ad_news_texte.text, ad_news_texte.headline, ad_news_texte.id
FROM autodo.ad_news_texte, autodo.ad_news
WHERE ad_news_texte.id =".$ID."
GROUP BY ad_news_texte.text, ad_news_texte.headline, ad_news_texte.id";
echo $sql_select=mysql_query($sql);
if($row = mysql_fetch_assoc($sql_select)){
$news_id= $row['id'];
$news_datum= $row['datum'];
$news_text= $row['text'];
$news_headline= $row['headline'];
?>
<div class="welcome-rahmen lng toggleNews" id="<?= $news_id ?> ">
<p class="welcome-breadcrump"><?= $news_datum ?></p>
<p class="welcome-subheadline"><?= $news_headline ?></p>
<div class="newsText">
<?= $news_text ?>
</div>
</div>
<? } ?>
您应该通过.
连接$ID和sql字符串
例如:
$sql=" SELECT DISTINCT ad_news.datum, ad_news_texte.text, ad_news_texte.headline, ad_news_texte.id
FROM autodo.ad_news_texte, autodo.ad_news
WHERE ad_news_texte.id =".$ID."
GROUP BY ad_news_texte.text, ad_news_texte.headline, ad_news_texte.id";
您单独使用<?= echo
- <?=
与<?php echo
相同。此外,正如另一个指出的那样,您在行尾缺少几个;
。
无论如何,我鼓励您使用准备好的语句或以其他方式清理从查询字符串中提取的数据,因为您编写的查询容易受到SQL注入的攻击。
首先将quote改为where中的变量
WHERE ad_news_texte.id ='$ID'
则在
中不使用echo <?= echo $news_datum ?>
尝试在你所有的代码<?= $news_datum ?>
所以你的整个代码将是
<?php
$ID=$_GET['id'];
$sql="SELECT DISTINCT ad_news.datum, ad_news_texte.text, ad_news_texte.headline, ad_news_texte.id FROM autodo.ad_news_texte, autodo.ad_news WHERE ad_news_texte.id ='$ID' GROUP BY ad_news_texte.text, ad_news_texte.headline, ad_news_texte.id";
$sql_select=mysql_query($sql);
$checkrow = mysql_num_rows($sql_select);
if($checkrow > 0) {
if($row = mysql_fetch_assoc($sql_select)){
$news_id= $row['id'];
$news_datum= $row['datum'];
$news_text= $row['text'];
$news_headline= $row['headline'];
?>
<div class="welcome-rahmen lng toggleNews" id="<?= $news_id ?> ">
<p class="welcome-breadcrump"><?= $news_datum ?></p>
<p class="welcome-subheadline"><?= $news_headline ?></p>
<div class="newsText">
<?= $news_text ?><?php }
}
else {
echo 'query does not return any rows';
}?>
一些错误,
- 你混合了速记和回显打印输出。
- echo语句末尾缺少
;
分号。 查询语法错误
首先打开你的错误,在你的文件上添加ini_set("display_errors",1);
。在输出变量
<?php echo $news_id; ?>
或
<?= $news_id ?>
查询应该是,
$sql=" SELECT DISTINCT ad_news.datum, ad_news_texte.text, ad_news_texte.headline, ad_news_texte.id
FROM autodo.ad_news_texte, autodo.ad_news
WHERE ad_news_texte.id = '$ID'
GROUP BY ad_news_texte.text, ad_news_texte.headline, ad_news_texte.id";
警告:请不要在新代码中使用mysql_*
函数。它们不再被维护,并被正式弃用。见红框?学习预处理语句,并使用PDO或MySQLi——本文将帮助您决定使用哪一种。如果你选择PDO,这里有一个很好的教程。