为什么这个php不能从查询工作中选择?

为什么这个php不能从查询工作中选择?,php,Php,以下是我的简单php代码: <!DOCTYPE html> <html> <body> <?php $servername = "localhost"; $username = "root"; $password = "********"; //hiding my password $dbname = "course"; $conn = new mysqli($servername, $username, $passwo

以下是我的简单php代码:

<!DOCTYPE html>
<html>
<body>

<?php
   $servername = "localhost";
   $username = "root";
   $password = "********";  //hiding my password
   $dbname = "course";
   $conn = new mysqli($servername, $username, $password, $dbname);
   // Check connection
   if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
   }

   $sql = "SELECT name FROM tutors";
   $result = $conn->query($sql);
   if( $result === true ) {
     echo "good";
   } else {
     echo "Error: " . $sql . "<br>" . $conn->error;
   }

   while($row = $result->fetch_assoc()) {
     echo $row["name"];
   }

?>
</body>
</html>
在名为course的数据库中,我有一个名为tutors的表,其中有一个名为name的列。表中有两个条目,分别是deep Think和比利牛斯山

但是,当此代码运行时,打印出来的唯一内容是:

错误:从导师中选择名称

它应该只打印出我前面提到的两个名字


有人知道为什么会这样吗?我知道我的表中有两个条目

为什么不像这样使用mysqli:

function getFollowers($link, $userid)
    {

        $sql = "SELECT users.id, username, profileImg FROM following INNER JOIN users ON users.id = following.userid WHERE followid = " . $userid;

        $result = mysqli_query($link,$sql);

        $resultsArray = [];

        while($row = mysqli_fetch_assoc($result)) {

            $resultsArray[] = $row;

        }

        mysqli_free_result($result);

        return $resultsArray;
    }
这只是一个清晰的例子,我相信你明白了

下面是$link的含义

function connection()
    {
        define('DB_SERVER', 'localhost');
        define('DB_USERNAME', 'username');
        define('DB_PASSWORD', 'password');
        define('DB_NAME', 'databaseTable');

        $link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);

        if($link === false){
            die("ERROR: Could not connect. " . mysqli_connect_error());
        }

        return $link;
    }
或不使用以下方法:

define('DB_SERVER', 'localhost');
            define('DB_USERNAME', 'username');
            define('DB_PASSWORD', 'password');
            define('DB_NAME', 'databaseTable');

            $link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);

            if($link === false){
                die("ERROR: Could not connect. " . mysqli_connect_error());
            }

        $sql = "SELECT name FROM tutors";

        $result = mysqli_query($link,$sql);

        $resultsArray = [];

        while($row = mysqli_fetch_assoc($result)) {

            echo $row["name"];

        }

        mysqli_free_result($result);
要检查查询是否成功,可以执行以下操作:

if (mysqli_num_rows($result) > 0)
{
    //has rows, so whatever you want with them.
}

您在定义$result之后放置了条件。

我认为单词名是MySQL。将查询变量包装在波浪形背景中,如下所示:

$sql = "SELECT `name` FROM `tutors`";

这有助于将这些值从MySQL中转义出来,因为MySQL认为您正在尝试引用内置变量。

如果$conn->connect_error{DIECONNECT failed:。$conn->connect_error;}那么,->query将为成功的SELECT查询返回一个结果对象,而不是true。因此,该条件未得到满足。这是有道理的,否则,如果$result为true,您将如何执行$result->fetch_assoc?我猜你想要$result!==我明白你的意思,我注意到了。这就解释了为什么会出现错误消息,但这不是我主要关心的问题。我主要关心的是为什么即使我的表不是空的,数据库中的名称也不会打印。printfSelect返回了%d行。\n,$result->num\u行;说?即使成功测试是错误的,这仍然应该打印行,因为他在打印错误消息时没有退出脚本。您在哪里检查查询是否成功?这就是问题的关键所在。