问题描述
在我的 PHP 代码中,我很容易将记录写入我的数据库,但由于某种原因我无法读取任何内容.我的 PHP 代码是:
In my PHP code, i'm easily writing records to my database but for some reason i can't read anythign out. My PHP code is:
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM companies";
if ($conn->query($sql) === TRUE)
{
echo "query success";
while($row = $result->fetch_assoc())
{
echo "ID: " . $row["ID"]. " - Name: " . $row["name"]. "<br>";
}
}
else
{
echo "query failure";
echo "Error: " . $sql . "<br>" . $conn->error;
}
$sql = "INSERT INTO companies (name)
VALUES ('mycompany')";
if ($conn->query($sql) === TRUE)
{
echo "insert success";
}
else
{
echo "insert failure";
echo "Error: " . $sql . "<br>" . $conn->error;
}
我运行时从浏览器得到的输出是:查询失败错误:SELECT * FROM公司插入成功
The output I get from the browser when i run it is:query failureError: SELECT * FROM companiesinsert success
我在 $sql 字符串中尝试了撇号、插入符号和引号的变体.我试过在 HeidiSQL 中运行这个查询,它工作正常.任何想法我哪里出错了?我可以尝试缩小问题根源的更基本内容的任何建议吗?
I've tried variations of apostrophes, carets, quotes in that $sql string. I've tried running this query in HeidiSQL and it works fine. Any ideas where I'm going wrong? Any suggestions of more basic stuff I can try to narrow down the source of the problem?
谢谢!
推荐答案
使用 mysqli->query()
和 SELECT
语句返回一个 的实例mysqli_result
.它与 true (=== true
) 不同,但也不代表错误.
Using mysqli->query()
with a SELECT
statement returns an instance of mysqli_result
. It is not identical to true (=== true
), but nor does it represent an error.
此外,$result
是未定义的.
改用这个:
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM companies";
if (($result = $conn->query($sql)) !== FALSE)
{
echo "query success";
while($row = $result->fetch_assoc())
{
echo "ID: " . $row["ID"]. " - Name: " . $row["name"]. "<br>";
}
}
else
{
echo "query failure";
echo "Error: " . $sql . "<br>" . $conn->error;
}
...
这只是将您的 === TRUE
检查更改为 !== FALSE
.MySQLi::query()
在失败时返回布尔值 FALSE,在没有结果集的成功查询时返回布尔值 TRUE,或者在结果集成功时返回 mysqli_result
.这也将 query() 的结果赋值给 $result
.
This simply changes your === TRUE
check to !== FALSE
. MySQLi::query()
returns boolean FALSE on failure, boolean TRUE on a successful query without result sets or a mysqli_result
upon success with a result set.This also assigns the result of query() into $result
.
这篇关于无法通过 PHP 查询 MySQL 数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!