我已从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"。
有人能告诉我我在做什么愚蠢的错误吗?
答案 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
}
您可以在此处详细了解if
和while
控件。
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;