【问题标题】:MySQL select on PHP can't get it to workPHP 上的 MySQL 选择无法正常工作
【发布时间】:2011-10-19 20:15:53
【问题描述】:

我在从 MySQL 数据库检索信息时遇到问题。你能帮帮我吗?这是我写的代码:

<?php 
                        $result = mysql_query("SELECT * FROM notas LIMIT 1 ORDER BY id DESC");
                        while($nt = mysql_fetch_array($result)) {
                    ?>
                    <div class="nuevos_1">
                        <div class="over_descripcion">
                            <div class="over_title">
                                <h3><a href="/nota/<?php echo $nt[fecha]."/".$nt[titulolower] ?>"><?php echo $nt[titulo] ?></a></h3>
                            </div>
                            <div class="over_autor">
                                <span><b>Por: </b><a href="/autor/<?php print $nt[autor]; ?>"><?php print ucwords(str_replace("-", " ", $nt[autor])); ?></a> <?php echo $nt[fecha] ?></span>
                            </div>
                            <div class="over_texto">
                                <span><b><?php echo strtoupper(str_replace("-", " ", $nt[categoria])) ?></b> <a href="/nota/<?php echo $nt[fecha]."/".$nt[titulolower] ?>"><?php echo substr(strip_tags($nt[texto]), 0, 240)."..." ?></a></span>
                            </div>
                            <div class="over_ver_mas">
                                <input type="button" value="Leer más" onclick="location.href='/nota/<?php echo $nt[fecha]."/".$nt[titulolower] ?>'" />
                            </div>
                        </div>
                        <a href="/nota/<?php echo $nt[fecha]."/".$nt[titulolower] ?>">
                          <img src="http://<?php echo $nt[imagen] ?>" border="0" />
                        </a>
                    </div>
                    <?php }; ?>

SELECT notas 数据库中没有显示任何内容。简直没了……

谢谢!

【问题讨论】:

  • 你需要先打开一个连接。 mysql_connect(...);你有这个吗?
  • 以后暂时做mysql_query("SELECT * FROM notas LIMIT 1 ORDER BY id DESC") or die(mysql_error());看看报错信息是什么。这将帮助您修复它。然后删除 or die... 部分,因为它可以泄露敏感信息。您可以做的另一件事是安装phpMyAdmin 并在那里运行您的查询。这也会显示错误。
  • 我想指出您正在以不受支持(已弃用)的方式访问 $nt[] 数组。而不是使用 $nt[index] ,你应该使用 $nt['index'] 。

标签: php mysql select


【解决方案1】:

限制 1 必须在 ORDER BY 之后

【讨论】:

  • 我一直在做同样的事情。我告诉我的妻子提醒我,当我无法弄清楚代码时,我是个白痴。它有助于唤起我对自己是个白痴的记忆,而且我可以更快地修复它。不过她还是不会叫我白痴,她太好了。
【解决方案2】:

将您的查询更改为

SELECT * FROM notas ORDER BY id DESC LIMIT 1

【讨论】:

    【解决方案3】:

    错误信息是什么意思

    $result = mysql_query("SELECT * FROM notas LIMIT 1 ORDER BY id DESC");
    if (mysql_error()) {
      die(mysql_error()); 
    }
    

    【讨论】:

    • 在一行中编写相同内容的更简单方法是 $result = mysql_query("SELECT * FROM table") 或 die(mysql_error());
    【解决方案4】:

    上面的其他答案是正确的 - 您的查询中有语法错误。如果您完成了以下基本步骤:

    $result = mysql_query(..) or die(mysql_error());
    

    您会看到错误消息。永远不要假设查询成功。始终检查错误情况。

    同样,您的输出中有一个小的语法错误:

    ... <a href="/nota/<?php echo $nt[fecha]."/".$nt[titulolower] ?>"> ...
                                    ^^^^^
    

    您的数组键没有被引用,这意味着它们被解释为define()'d 常量。 PHP 是礼貌的,如果实际上没有具有该名称的常量,它将把这些常量视为字符串,但它会在每次出现时发出警告。应该是:

    <?php echo $nt['fecha'] ... ?>
    

    【讨论】:

      【解决方案5】:

      我不太了解 PHP,但是您的 select 语句仅限于一个结果。您可能想要更改此行:

       $result = mysql_query("SELECT * FROM notas LIMIT 1 ORDER BY id DESC");
      

      您不会得到一个以上的结果。

      【讨论】:

        猜你喜欢
        • 2014-10-31
        • 2017-04-07
        • 1970-01-01
        • 1970-01-01
        • 2014-04-23
        • 2017-12-20
        • 2013-10-06
        • 2016-01-24
        • 2015-01-17
        相关资源
        最近更新 更多