无法从PHP访问数据库值

时间:2015-11-13 00:24:42

标签: php mysql resultset

我已从php连接到mySql数据库。我想从中获取两列的详细信息。当我尝试访问它们时,它输出null。 当我在phpmyAdmin数据库工具中运行时,相同的查询字符串工作正常。

以下是我的代码:

$servername = "mysql";
            $username = "$$$$$$$$$";
            $password = "%%%%%%%%%%";
            $databasename = 'blog';

            // Create connection
            $conn = new mysqli($servername, $username, $password, $databasename);

            // Check connection
            if ($conn->connect_error) {
                die("Connection failed: " . $conn->connect_error);
            } else {
                echo "Connected successfully";
            }



 $select_sql = "Select site_url from sites where id LIKE '%website1Modal%'";
            $result = $conn->query($select_sql);

            if ($result->num_rows > 0) {
              echo "in if loop";
               echo $result[0];
}

以上代码输出:"已成功连接"和"在if loop"。

有人能告诉我我在做什么愚蠢的错误吗?

4 个答案:

答案 0 :(得分:3)

if并没有让你进入循环。 if是一种控制结构。使用while输入循环并将fetch置于内部,以便可以访问结果。

尝试一下:

$servername = "mysql";
$username = "$$$$$$$$$";
$password = "%%%%%%%%%%";
$databasename = 'blog';
// Create connection
$conn = new mysqli($servername, $username, $password, $databasename);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} else {
    echo "Connected successfully";
}
$select_sql = "Select site_url from sites where id LIKE '%website1Modal%'";
$result = $conn->query($select_sql);
if ($result->num_rows > 0) {
    echo "in if control";
    while($row = $result->fetch_array()) { //this is optional; if only one row the while can be removed. e.g. $row = $result->fetch_array();
        echo 'in while loop';
        echo $row['site_url'];
    } //if removing while remove this as well
}

您可以在此处详细了解ifwhile控件。

http://php.net/manual/en/control-structures.if.php
http://php.net/manual/en/control-structures.while.php

这里是query所做的手册输入。

重要的一点

  

对于成功的SELECT,SHOW,DESCRIBE或EXPLAIN查询,mysqli_query()将返回一个mysqli_result对象。

并且因为您有mysqli_result object,您需要将其发送到fetch

  

返回与获取的行对应的字符串数组,如果结果集中没有其他行,则返回NULL。

答案 1 :(得分:0)

您需要使用Mysqli_Result::fetch_assoc()

获取结果的每一行
while($row = $result->fetch_assoc())
{
    print_r($row);
}

将打印结果集的每一行。

您可以使用;

访问循环内结果行的每个属性
$row['col_name'];

其中col_name是列的名称。

答案 2 :(得分:-1)

由于$result[0]是一个数组,因此您无法使用echo使用print_r来显示它:

echo '<pre>';
print_r($result[0]);
echo '</pre>';

如果要显示site_url var,则需要使用:

echo $result[0]['site_url'];

答案 3 :(得分:-1)

// put your db-connection in a different file, preferably placing it outside your webroot
include('../some/folder/dbconn.php');

$select_sql = "Select site_url from sites where id LIKE '%website1Modal%'";
$result = $conn->query($select_sql);

if ($result->num_rows() > 0) {
    // fetch the result
    $result = $conn->fetch();
    // echo the result
    echo $result['site_url'];
}

// close db connection
$conn = NULL;
相关问题