2015-11-10 5 views
0

Привет, я получаю Неверное смещение строки предупреждение в php, когда я пытаюсь сохранить значения из ассоциированного массива в таблицу.Недопустимое смещение строки в php

Когда я распечатать ассоциативный массив, я получаю это:

Array ([ProductName] => iphone [productDesc] => Продукт из яблока [цена] => 5 [изображение] => тест/группа/pic.png)

$db1 = new mysqli('localhost',$user,$pass,$db) or die (" Connection failed "); 
    $query="Select productName,productDesc,price,image from product where productID=1"; 
    $query_first=mysqli_query($db1,$query) or die("Query not retrieved"); 

    $query_second=mysqli_fetch_assoc($query_first); 
    //print_r($query_second); 
    $rows=mysqli_num_rows($query_first); 
    echo '<table border="1">'; 
    echo '<tr> 

      <td> Product Name</td> 
      <td> Product Description</td> 
      <td> Price</td> 
      <td> Image </td> 
     </tr> '; 

    foreach($query_second as $r) 
    { 


     echo '<tr><td>'.$r['productName']; 
     echo '</td><td>'.$r['productDesc']; 
     echo '</td><td>'.$r['price']; 
     echo '</td><td>'.$r['image']; 
     echo '</td></tr>'; 
    }//end foreach 
    echo"</table>"; 
+1

места вашего 'mysqli_fetch_assoc' в то время, а не' foreach' –

+0

ответа вы приняли, это именно то, что я имел в виду by^ –

ответ

1

http://php.net/manual/en/mysqli-result.fetch-assoc.php

mysqli_result :: FETCH_ASSOC - mysqli_fetch_assoc - извлекает результирующий ряд как ассоциативный массив

mysqli_mysqli_fetch_assoc возвращает ONE единственной строки из базы данных. Как вы можете видеть в результате print_r().

Массив содержит:

Array ([productName] => iphone [productDesc] => A product from apple [price] => 5 [image] => test/Group/pic.png) 

Итак, когда вы Переберите массив в первой итерации $ г будет содержать строку со значением «айфона», вторая петля «продукт от яблока» и так далее.

В вашем коде вы в основном говорите: «из STRING iphone дайте мне символ в позиции« productName »», и, как вы можете догадаться, «productName» не является допустимой позицией char в строке.

Так что вам нужно повторять все строки из таблицы.

<?php 
$db1 = new mysqli('localhost',$user,$pass,$db) or die (" Connection failed "); 
$query="Select productName,productDesc,price,image from product where productID=1"; 
$query_first=mysqli_query($db1,$query) or die("Query not retrieved"); 

//print_r($query_second); 

echo '<table border="1">'; 
echo '<tr> 

    <td> Product Name</td> 
    <td> Product Description</td> 
    <td> Price</td> 
    <td> Image </td> 
</tr> '; 


while($r=mysqli_fetch_assoc($query_first)) { 

    echo '<tr><td>'.$r['productName']; 
    echo '</td><td>'.$r['productDesc']; 
    echo '</td><td>'.$r['price']; 
    echo '</td><td>'.$r['image']; 
    echo '</td></tr>'; 
}//end foreach 
echo"</table>"; 

?> 

Если вы просто хотите 1 одну строки, то вам не нужно Интерактивный

<?php 
$db1 = new mysqli('localhost',$user,$pass,$db) or die (" Connection failed "); 
$query="Select productName,productDesc,price,image from product where productID=1"; 
$query_first=mysqli_query($db1,$query) or die("Query not retrieved"); 

//print_r($query_second); 

echo '<table border="1">'; 
echo '<tr> 

    <td> Product Name</td> 
    <td> Product Description</td> 
    <td> Price</td> 
    <td> Image </td> 
</tr> '; 


$r=mysqli_fetch_assoc($query_first); 

echo '<tr><td>'.$r['productName']; 
echo '</td><td>'.$r['productDesc']; 
echo '</td><td>'.$r['price']; 
echo '</td><td>'.$r['image']; 
echo '</td></tr>'; 

echo"</table>"; 

?> 
+0

Редактировать: извините, плохая копия: D –

+0

Lol, FIxed мои проблемы, спасибо – BDS

+0

Столбец изображения в таблице содержит расположение файла изображения, как бы я его отобразил? – BDS

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