为什么这个php不能从查询工作中选择?
以下是我的简单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
<!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行;说?即使成功测试是错误的,这仍然应该打印行,因为他在打印错误消息时没有退出脚本。您在哪里检查查询是否成功?这就是问题的关键所在。