2014-01-15 3 views
0

Цель моего кода - получить все имена пользователей из базы данных и эхо их в порядке возрастания с разрывом между ними. Кажется, он отлично работает, кроме одной строки.Не удается выполнить эхо-данные из базы данных (массива), PHP

Когда я запускаю этот код, я получаю ошибку

Fatal error: Unsupported operand types in C:\wamp\www\Site files\users.php on line 23

Я выделил эту строку в коде с ** на эфирной стороне. Я пробовал много способов сделать эту работу, но я не особенно компетентен, и я не могу найти решение.

<?php 
$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password=""; // Mysql password 
$db_name="comproject"; // Database name 
$tbl_name="members"; // Table name 

// Connect to server and select databse. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

$query = mysql_query("SELECT username FROM members ORDER BY username ASC") or die(mysql_error()); 
$count = mysql_num_rows($query); 
$array = array(); 
while ($row = mysql_fetch_array($query, MYSQL_NUM)) { 
$array[] = $row; } 

for ($i=0; $count>$i; $i++) { 
    **echo $array[$i] + "<br/>";** 
} 
?> 

Кроме того, я пытаюсь переместить свой код в MySQLi, так что если у вас есть какие-либо предложения о том, что делать, тоже хорошо спасибо :) Я понимаю, его почти так же,

+3

В PHP вы используете '.' для конкатенации, а не' + '(как и в JavaScript). См. Документацию: http://www.php.net/manual/en/language.operators.string.php –

+0

Почему вы копируете результаты своего запроса в массив, только затем перебираете массив и эхо его вывод ? Почему бы не 'echo $ row [0]' в цикле 'while'? – eggyal

ответ

1

Изменение к этому:

for ($i=0; $count>$i; $i++) { 
    echo $array[$i][0] . "<br/>"; 
} 

Вопросы являются:

  1. Вы конкатенации строки с .
  2. $array[$i] является численно-индексированный массив с первого элемента имени пользователя:

$array является:

Array 
    (
     [0] => Array 
      (
       [0] => UsernameOne 
     ) 

     [1] => Array 
      (
       [0] => UsernameTwo 
     ) 

) 
+0

Отлично, отлично работает. Почему был нужен [0]? – Shard

+0

Потому что '$ array':' Array (0 => Array (0 => UsernameOne), 1 => Array (0 => UsernameTwo)) '. Поэтому '$ array [$ i]' является 'Array (0 => Username)' и '$ array [$ i] [0]' is 'Username'. – MichaelRushton

+0

Я вижу, 2d. Ok thanks :) – Shard

5

В PHP строк объединяются с помощью . нет +. Попробуйте:

echo $array[$i] . "<br/>"; 
+0

Спасибо, но новая ошибка сейчас »Обратите внимание: массив в преобразование строки в C: \ wamp \ www \ файлы сайта \ users.php в строке 23". Также его эхом повторил «Массив» снова и снова. То же самое, что и раньше, – Shard

+0

@Shard '$ array' содержит массивы. Как вы хотите, чтобы они отображались? – Jim

+1

@Shard Try: echo $ array [$ i] [0]. "
"; – Jim

0

Соединить строки с . не +:

echo $array[$i]."<br/>"; 
+0

Спасибо, прочитайте комментарий на другой ответ, хотя :) – Shard

0

Попробуйте с MySQLi, как это (код описанных с комментариями):

$host="localhost"; // Host name 
    $username="root"; // Mysql username 
    $password=""; // Mysql password 
    $db_name="comproject"; // Database name 
    $tbl_name="members"; // Table name 

    // Connect to server and select databse. 
    $mysqli = new mysqli("$host", "$username", "$password"); 
    //check connect error 
    if (mysqli_connect_errno()) { 
     printf("Connection failed: %s", mysqli_connect_error()); 
     exit(); 
    } 


    // run query 
    $result = $mysqli->query("SELECT username FROM members ORDER BY username ASC"); 
//fetch data 
    while($row = $result->fetch_array()) 
    { 
     echo $row['username']."<br />"; 
    } 


    /* free result set */ 
    $result->close(); 

    /* close connection */ 
    $mysqli->close(); 
+0

Это выглядит намного сложнее, чем я думал, я думал, что по большей части вы могли бы просто изменить my_sql на my_sqli? – Shard

+0

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

+0

да, я согласен со всем этим, я просто подумал, что прыжок между mysql и mysqli был крошечным – Shard

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