mysql — не может получить доступ к значению базы данных из переполнения стека

Я подключился к базе данных mySql с php. Я хочу получить детали для двух столбцов из него. Когда я пытаюсь получить к ним доступ, он выводит ноль.
Эта же строка запросов работает нормально, когда я запускаю инструмент базы данных 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».

Может кто-нибудь сказать мне, какую глупую ошибку я совершаю?

0

Решение

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

Вот ручной ввод для чего запрос делает.

Важный бит

Для успешных запросов SELECT, SHOW, DESCRIBE или EXPLAIN mysqli_query () вернет объект mysqli_result.

и потому что у вас есть mysqli_result object Вы должны отправить это получать который будет

Возвращает массив строк, который соответствует выбранной строке или NULL, если в наборе результатов больше нет строк.

3

Другие решения

Вам нужно получить каждый ряд результатов, используя Mysqli_Result::fetch_assoc()

while($row = $result->fetch_assoc())
{
print_r($row);
}

напечатает каждую строку набора результатов.

Вы можете получить доступ к каждому свойству строки результата внутри цикла с помощью;

$row['col_name'];

где col_name это имя столбца.

0

Как $result[0] массив, вы не можете отобразить его, используя echo использовать print_r вместо:

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

Если вы хотите отобразить site_url var вам нужно использовать:

echo $result[0]['site_url'];
-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;
-1
По вопросам рекламы [email protected]