首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基本PHP SQL查询不起作用

基本PHP SQL查询不起作用
EN

Stack Overflow用户
提问于 2012-10-09 18:05:34
回答 5查看 374关注 0票数 0

我们有一个基本的PHP脚本从MySQL数据库中提取每个作业的标题和描述,只需显示此信息。它看起来是这样的:

代码语言:javascript
复制
$sql        = "SELECT `title`, `desc` FROM jobs WHERE active = 'y'";
$query      = mysql_query($sql) or die('<em><strong>SQL Error:</strong> ' . mysql_error() . '</em>');
$results    = mysql_fetch_assoc($query);

<?php while($result = mysql_fetch_assoc($query)) {
    echo '<div class="left_content" style="margin-top: 15px;">';
    echo "<h2>{$results['title']}</h2>";
    echo "<p>{$results['desc']}</p>";
    echo '</div>';
} ?>

现在,这只从数据库中提取一行,但它应该提取两行。因此,我尝试使用以下命令来替换while语句:

代码语言:javascript
复制
<?php foreach($results as $result) {
    echo '<div class="left_content" style="margin-top: 15px;">';
    echo "<h2>{$result['title']}</h2>";
    echo "<p>{$result['desc']}</p>";
    echo '</div>';
} ?>

这个语句也不起作用。这只会(奇怪地)显示表中第一行中每列的第一个字符。

有没有人知道为什么它不能正常工作?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-10-09 18:07:45

您使用的结果变量不是results,而是result

替换

代码语言:javascript
复制
$sql        = "SELECT `title`, `desc` FROM jobs WHERE active = 'y'";
$query      = mysql_query($sql) or die('<em><strong>SQL Error:</strong> ' . mysql_error() . '</em>');
**$results    = mysql_fetch_assoc($query);** // remove this line

<?php while($result = mysql_fetch_assoc($query)) {
    echo '<div class="left_content" style="margin-top: 15px;">';
    echo "<h2>{$results['title']}</h2>";
    echo "<p>{$results['desc']}</p>";
    echo '</div>';
} ?>

代码语言:javascript
复制
$sql        = "SELECT `title`, `desc` FROM jobs WHERE active = 'y'";
$query      = mysql_query($sql) or die('<em><strong>SQL Error:</strong> ' . mysql_error() . '</em>');


<?php while($result = mysql_fetch_assoc($query)) {
    echo '<div class="left_content" style="margin-top: 15px;">';
    echo "<h2>{$result['title']}</h2>";
    echo "<p>{$result['desc']}</p>";
    echo '</div>';
} ?>
票数 2
EN

Stack Overflow用户

发布于 2012-10-09 18:07:50

while中,使用与启动时相同的变量$result

代码语言:javascript
复制
while($result = mysql_fetch_assoc($query)) {
    echo '<div class="left_content" style="margin-top: 15px;">';
    echo "<h2>{$result['title']}</h2>";
    echo "<p>{$result['desc']}</p>";
    echo '</div>';
}

并删除第一个$results = mysql_fetch_assoc($query);

票数 3
EN

Stack Overflow用户

发布于 2012-10-09 18:08:47

在循环开始之前,您已经获取了第一行,这就是为什么它只打印第二行的原因。只需注释掉这一行:

代码语言:javascript
复制
#$results = mysql_fetch_assoc($query); # here is your first row, 
                                       # simply comment this line

<?php while($result = mysql_fetch_assoc($query)) {
    echo '<div class="left_content" style="margin-top: 15px;">';
    echo "<h2>{$result['title']}</h2>";
    echo "<p>{$result['desc']}</p>";
    echo '</div>';
} ?>

您还在$result上循环,但在while循环体中使用了$results

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12797617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档