【问题标题】:Simple PHP MYSQL select statement doesn't return anything简单的 PHP MYSQL 选择语句不返回任何内容
【发布时间】:2017-12-28 06:10:17
【问题描述】:

好的,所以我有一个带有一张表的简单数据库,并且我有一个函数应该获取该一张表的所有行:

function get_days() {
    global $db;
    $query = 'SELECT * FROM days'
            . 'ORDER BY idDays';
    $statement = $db ->prepare($query);
    $statement ->execute();
    $the_days = $statement->fetchAll();
    //$statement->closeCursor();
    return $the_days;
    //return $statement;
}

我检查了其他所有内容,其他所有内容都正常运行,包括我将数据输入到表中的网站部分,插入语句运行正常,因此我将其范围缩小到这一个 select 语句。

【问题讨论】:

  • 你不需要准备好的声明,是吗?
  • 'SELECT * FROM days ORDER BY idDays ASC';
  • 您的查询中有错误我相信@whoami 建议正确的查询是'SELECT * FROM days ORDER BY id,Days ASC';
  • 您的查询有误。您可以通过适当的错误检查来避免这种情况。现在您的查询是:SELECT * FROM daysORDER BY idDays,因为您没有包含空格字符。
  • @Lambda7 不,他没有。但无论如何,这样做通常是个好主意。我在这里解释更多:stackoverflow.com/questions/31230504/…

标签: php mysql


【解决方案1】:

这是选择您可以使用函数的简单方法。

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

        $sql = "SELECT * FROM days ORDER BY idDays";
        $result = $conn->query($sql);

        if ($result->num_rows > 0) {
            // output data of each row
            while($row = $result->fetch_assoc()) {
                //do  anything
            }
        } else {
            echo "0 results";
        }

【讨论】:

  • 这只是一个非常糟糕的答案。在他的问题中,您在哪里看到 $conn?为什么要删除函数get_days()?你的错误处理在哪里?为什么要删除准备好的声明?你对这个答案的解释在哪里?
【解决方案2】:

问题在于您的查询的字符串连接:

$query = 'SELECT * FROM days' . 'ORDER BY idDays';

这会导致:SELECT * FROM daysORDER BY idDays

包含一个空格字符:

$query = 'SELECT * FROM days' . ' ORDER BY idDays';

您可以通过适当的错误处理来避免此类问题:

try{
    $statement->execute();
}
catch(PDOException $e){
    exit($e->getMessage());
}

您可能还想删除以下空格:

$db ->prepare($query);
$statement ->execute();

所以他们变成了:

$db->prepare($query);
$statement->execute();

【讨论】:

    【解决方案3】:

    问题在于您的 SQL 语法。你应该这样做:

    function get_days() {
        global $db;
        $query = 'SELECT * FROM days '
                . 'ORDER BY id';
        $statement = $db ->prepare($query);
        $statement ->execute();
        $the_days = $statement->fetchAll();
        //$statement->closeCursor();
        return $the_days;
        //return $statement;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 2022-01-09
      • 2019-03-22
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多