2014-01-19 4 views
-2

меня изменить заявление mysql_query на Mysqli нижеКак использовать mysqli-запрос вместо mysql_query без получения FATAL ERROR?

$sqlordlod = "SELECT * FROM order_list 
      WHERE user_id = '$user_id' 
      ORDER by order_id LIMIT $offset, $rec_limit "; 
$result = $mysqli->query($sqlordlod); 
$countrw = $result->num_rows; 
echo $countrw; 

соединения файл DB

$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_database); 

/* check connection */ 
if (mysqli_connect_errno()) { 
printf("Connect failed: %s\n", mysqli_connect_error()); 
exit(); 
} 

Во всяком случае, следовать внушениям, которые я сделал вышеуказанные изменения, но получил:

Warning: mysqli::query() expects parameter 1 to be string, object given in /Applications/XAMPP/xamppfiles/htdocs/_/globe/ru/profile.php on line 487

Fatal error: Call to a member function fetch_array() on a non-object in /Applications/XAMPP/xamppfiles/htdocs/_/globe/ru/profile.php on line 487

Под строкой 487

while($rowld = $mysqli->query($result)->fetch_array()) 
{ 
// flip flop controling the tr class to change the color 
if ($classchk ==3){ 
     $classchk =1; 
    } 
if ($classchk ==2){ 
    $classname = "alt"; 
}else{ 
    $classname = "none"; 

    } 
+0

Не могли бы вы предоставить больше кода, чтобы я мог понять, чего вы пытаетесь достичь? – vooD

ответ

1

num_rows это свойство, а не метод:

$countrw = $result->num_rows; 
          ^--- no function call 
+0

нет вызова функции? это будет ошибка, не так ли? –

+0

№. это не метод. это СОБСТВЕННОСТЬ объекта оператора mysqli. –

+0

Да, вы правы, я исправил это. –

0

Заменить

$result = $mysqli->query($sqlordlod); 

с

$result = $mysqli->query($serverconnection,$sqlordlod); 

Здесь $ ServerConnection Ваш дб результат соединения

попробовать это один

здесь легко и рабочий код для подсчета строк

$dbhost="localhost"; 
$dbusername="root"; 
$dbpassword=""; 
$dbname="test"; 

$con=mysqli_connect($dbhost,$dbusername,$dbpassword,$dbname); 

/* check connection */ 
$sqlordlod = "SELECT * FROM tablename"; 
//$resultordlod = mysql_query($sqlordlod); 
//$countrw = mysql_num_rows($resultordlod); 
$result = mysqli_query($con, $sqlordlod); 
// fetch the result row. 
$countrw = mysqli_num_rows($result); 
echo $countrw; 
+0

Я добавил сценарий подключения db к вопросу, пожалуйста, взгляните на это. И я изменил запрос на $ result = $ mysqli-> query ($ mysqli, $ sqlordlod); это то, что вы имели ввиду? если да, то я получил новую ошибку. Предупреждение: mysqli :: query() ожидает, что параметр 1 является строкой, объект указан в /Applications/xamppfiles/h....../prole.php в строке 461 –

+0

, пожалуйста, напишите 461 line здесь – Vivek

+0

-1. mysqli в объектном режиме не требует дескриптора соединения, потому что этот дескриптор встроен в объект. Фактически, ваш вызов метода прямо НЕПРАВИЛЬНО, потому что ** НЕТ ПАРАМЕТРА ПРОПУСКАТЬ РУЧКУ ** –

1

num_rows является свойство не метод.

$sqlordlod = "SELECT * FROM order_list 
       WHERE user_id = '$user_id' 
       ORDER by order_id LIMIT $offset, $rec_limit "; 
$result = $mysqli->query($sqlordlod); 
$countrw = $result->num_rows; 
echo $countrw; 

Редактировать: что-то действительно не так с вашим кодом. Я думаю, вы хотели бы сделать следующее:

while($rowld = $result->fetch_array()) 
{ 
// flip flop controling the tr class to change the color 
if ($classchk ==3){ 
     $classchk =1; 
    } 
if ($classchk ==2){ 
    $classname = "alt"; 
}else{ 
    $classname = "none"; 

    } 
+0

Привет, спасибо за исправление, но получил новые ошибки, я изменил вопросы и сохранил сообщения об ошибках в вопросительном теле длинный с кодом. любезно взгляните на сообщение снова, прежде чем снова проголосовать без причины: D спасибо. –

+0

Отредактировал мой ответ – vooD

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