无法通过PHP查询MySQL数据库

无法通过PHP查询MySQL数据库,php,mysql,Php,Mysql,在PHP代码中,我很容易将记录写入数据库,但由于某种原因,我无法读取任何内容。我的PHP代码是: $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT * FROM co

在PHP代码中,我很容易将记录写入数据库,但由于某种原因,我无法读取任何内容。我的PHP代码是:

$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;
}
$conn=newmysqli($servername、$username、$password、$dbname);
//检查连接
如果($conn->connect\u错误){
die(“连接失败:”.$conn->connect\U错误);
} 
$sql=“从公司中选择*”;
if($conn->query($sql)==TRUE)
{
回显“查询成功”;
而($row=$result->fetch_assoc())
{
echo“ID:.$row[“ID”]。-Name:.$row[“Name”]。“
”; } } 其他的 { 回显“查询失败”; echo“Error:”.$sql.“
”$conn->Error; } $sql=“插入公司(名称) 价值观(“mycompany”)”; if($conn->query($sql)==TRUE) { 回应“插入成功”; } 其他的 { 回显“插入失败”; echo“Error:”.$sql.“
”$conn->Error; }
运行浏览器时从浏览器获得的输出为:
查询失败错误:从公司中选择*
插入成功

我在$sql字符串中尝试了撇号、插入符号和引号的变体。我试着在HeidiSQL中运行这个查询,效果很好。知道我哪里出错了吗?我可以尝试缩小问题的根源,对更基本的东西有什么建议吗


谢谢

您尚未将查询结果分配给
$result
变量

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

    $sql = "SELECT * FROM companies";
    $result = $conn->query($sql);
    if ($result === 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;
    }
$conn=newmysqli($servername、$username、$password、$dbname);
//检查连接
如果($conn->connect\u错误){
die(“连接失败:”.$conn->connect\U错误);
} 
$sql=“从公司中选择*”;
$result=$conn->query($sql);
如果($result==TRUE)
{
回显“查询成功”;
而($row=$result->fetch_assoc())
{
echo“ID:.$row[“ID”]。-Name:.$row[“Name”]。“
”; } } 其他的 { 回显“查询失败”; echo“Error:”.$sql.“
”$conn->Error; } $sql=“插入公司(名称) 价值观(“mycompany”)”; if($conn->query($sql)==TRUE) { 回应“插入成功”; } 其他的 { 回显“插入失败”; echo“Error:”.$sql.“
”$conn->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";
    $result = $conn->query($sql);
    if ($result === 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;
    }
$conn=newmysqli($servername、$username、$password、$dbname);
//检查连接
如果($conn->connect\u错误){
die(“连接失败:”.$conn->connect\U错误);
} 
$sql=“从公司中选择*”;
$result=$conn->query($sql);
如果($result==TRUE)
{
回显“查询成功”;
而($row=$result->fetch_assoc())
{
echo“ID:.$row[“ID”]。-Name:.$row[“Name”]。“
”; } } 其他的 { 回显“查询失败”; echo“Error:”.$sql.“
”$conn->Error; } $sql=“插入公司(名称) 价值观(“mycompany”)”; if($conn->query($sql)==TRUE) { 回应“插入成功”; } 其他的 { 回显“插入失败”; echo“Error:”.$sql.“
”$conn->Error; }
使用
mysqli->query()
SELECT
语句返回
mysqli\u结果的实例。它与true不同(
==true
),但也不表示错误

此外,
$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;
}
...
$conn=newmysqli($servername、$username、$password、$dbname);
//检查连接
如果($conn->connect\u错误){
die(“连接失败:”.$conn->connect\U错误);
} 
$sql=“从公司中选择*”;
if(($result=$conn->query($sql))!==FALSE)
{
回显“查询成功”;
而($row=$result->fetch_assoc())
{
echo“ID:.$row[“ID”]。-Name:.$row[“Name”]。“
”; } } 其他的 { 回显“查询失败”; echo“Error:”.$sql.“
”$conn->Error; } ...
这只是将您的
==TRUE
检查更改为
!==错误
MySQLi::query()
在失败时返回布尔值FALSE,在没有结果集的成功查询时返回布尔值TRUE,或者在有结果集的成功查询时返回
MySQLi\u结果。
这还使用
mysqli->query()
SELECT
语句将query()的结果分配到
$result

,返回
mysqli\u result
的实例。它与true不同(
==true
),但也不表示错误

此外,
$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;
}
...
$conn=newmysqli($servername、$username、$password、$dbname);
//检查连接
如果($conn->connect\u错误){
die(“连接失败:”.$conn->connect\U错误);
} 
$sql=“从公司中选择*”;
if(($result=$conn->query($sql))!==FALSE)
{
回显“查询成功”;
而($row=$result->fetch_assoc())
{
echo“ID:.$row[“ID”]。-Name:.$row[“Name”]。“
”; } } 其他的 { 回显“查询失败”; echo“Error:”.$sql.“
”$conn->Error; } ...
这只是将您的
==TRUE
检查更改为
!==错误
MySQLi::query()
在失败时返回布尔值FALSE,在没有结果集的成功查询时返回布尔值TRUE,或者在有结果集的成功查询时返回
MySQLi\u结果。

这也会将query()的结果分配到
$result

中。问题是选择查询成功时将返回mysqli_结果对象,而不是布尔值TRUE。只有当查询失败时,才会返回布尔值FALSE

因此,您应该这样使用它:

$result = $conn->query($sql);

if ($result !== FALSE){
    while($row = $result->fetch_assoc())
    {
        echo "ID: " . $row["ID"]. " - Name: " . $row["name"]. "<br>";
    }
}
$result=$conn->query($sql);
如果($result!==FALSE){
而($row=$result->fetch_assoc())
{
echo“ID:.$row[“ID”]。-Name:.$row[“Name”]。“
”; } }
问题是SELECT查询成功时将返回mysqli\u结果对象,而不是布尔值TRUE。只有我