2015-03-10 2 views
0

Я работаю над преобразованием некоторого кода PHP из mysql в mysqli. Я создал ошибку и не могу понять, как ее исправить. Любые предложения будут ценны.Преобразование из mysql в mysqli и получение Fatal error: нельзя использовать объект типа mysqli as array

код выглядит следующим образом:

<?php 
include ("admin/includes/connect.php"); 

$query = "select * from posts order by 1 DESC LIMIT 0,5"; 

$run = mysqli_query($conn["___mysqli_ston"], $query); 

while ($row=mysqli_fetch_array($run)){ 

$post_id = $row['post_id']; 
$title = $row['post_title']; 
$image = $row['post_image']; 

?> 

Ошибка производства является: Фатальная ошибка: Не удается использовать объект типа MySQLi как массив Ошибка вызывается на этой линии:

$ выполнения = mysqli_query ($ conn ["___ mysqli_ston"], $ query);

В строке выше $ свя является переменным из базы данных подключения файла, который имеет следующий код:

<?php 

// Stored the db login credentials in separate file. 
require("db_info.php"); 

// Supressing automated warnings which could give out clues to database user name, etc. 
mysqli_report(MYSQLI_REPORT_STRICT); 

// Try to open a connection to a MySQL server and catch any failure with a controlled error message. 
try { 

$conn=mysqli_connect ('localhost', $username, $password) or die ("$dberror1"); 

} catch (Exception $e) { 
    echo "$dberror1"; 
    //echo "message: " . $e->message; // Not used for live production site. 
    exit; 
} 

// Try to Set the active MySQL databaseand catch any failure with a controlled error message. 
try { 

$db_selected = mysqli_select_db($conn, $database) or die ("$dberror2"); 

} catch (Exception $e) { 
    echo "$dberror2"; 
    //echo "message: " . $e->message; // Not used for live production site. 
    exit; 

    // We want to stop supressing automated warnings after the database connection is completed. 
    mysqli_report(MYSQLI_REPORT_OFF); 
} 

?> 

ответ

0

Эта линия

$run = mysqli_query($conn["___mysqli_ston"], $query); 

должен быть

$run = mysqli_query($conn, $query); 
+0

Спасибо большое ваше решение было совершенное исправление! Это большая помощь для меня, потому что эта же проблема возникает в нескольких местах. –

0

Если вы Перейдя на mysqli, вы действительно должны прочитать thesedocs как минимум.

Надлежащим образом использовать Mysqli соединение:

<?php 
    $mysqli = new mysqli("example.com", "user", "password", "database"); 
    if ($mysqli->connect_errno) { 
     echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; 
    } 
    $res = $mysqli->query("SELECT id FROM test ORDER BY id ASC"); 

    while ($row = $res->fetch_assoc()) { 
     echo " id = " . $row['id'] . "\n"; 
    } 
?> 

вы должны также рассмотреть вопрос об использовании подготовленные заявления Mysqli в

+0

Марио, спасибо вам за ссылку на эти документы. Я искал старые инструкции sql на php.net, а затем щелкнул ссылку, в которой говорится, что они устарели и следуют ссылке на новые функции mysqli. Тогда, конечно, они пытаются их изучить. Благодарим вас за образец кода в подключении db. Я был обеспокоен тем, как это может отразить имя пользователя db при ошибке, и я не уверен, что это полезно? –

+0

Это был просто простой пример. Для эхо-сигнала dbuser вы, конечно же, можете сохранить значения в переменной и использовать их для вызова 'new mysqli ($ host, $ user, $ password, $ database)' – Mario

Смежные вопросы