Я подключился к базе данных 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».
Может кто-нибудь сказать мне, какую глупую ошибку я совершаю?
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, если в наборе результатов больше нет строк.
Вам нужно получить каждый ряд результатов, используя Mysqli_Result::fetch_assoc()
while($row = $result->fetch_assoc())
{
print_r($row);
}
напечатает каждую строку набора результатов.
Вы можете получить доступ к каждому свойству строки результата внутри цикла с помощью;
$row['col_name'];
где col_name
это имя столбца.
Как $result[0]
массив, вы не можете отобразить его, используя echo
использовать print_r
вместо:
echo '<pre>';
print_r($result[0]);
echo '</pre>';
Если вы хотите отобразить site_url
var вам нужно использовать:
echo $result[0]['site_url'];
// 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;