2013-11-25 2 views
-1

я постоянно развиваю свой сайт, пока я не получил эту ошибку:Ошибка: Illegal строка Смещение в PHP

Warning: Illegal string offset 'user_post' in C:\xampp\xxxxxx\xxxx.php on line 15 

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

Это мой PHP код:

<?php 
    $db = new mysqli("xxxxxxxxxxxxxxx", "xxxxxxxx", "xxxxxxxxxxxxxx", "xxxxxxxxx"); 
    if($db->connect_errno > 0) { 
    die('Unable to connect to database [' . $db->connect_error . ']'); 
    } 

    $sql = "SELECT * FROM page_posts"; 
    $post_arr = array(); 
    $post_arr = $db->query($sql); 
    $post_rows = $post_arr->fetch_array() 

    foreach($post_rows as $row) 
    { 
    echo $row['user_post']; 
    } 
?> 

Я использую MySQL и тип данных для этого столбца 'текст'.

Это структура таблицы:

post_id int 
user_id int 
post_title int 
user_post text 
post_date datetime 
post_page varchar(32) 

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

Это результат vardump:

array(24) { [0]=> string(1) "3" ["post_id"]=> string(1) "3" [1]=> string(1) "0" ["user_id"]=> string(1) "0" [2]=> string(13) "My First Post" ["post_title"]=> string(13) "My First Post" [3]=> string(329) "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse tincidunt neque in erat vestibulum, sed gravida odio venenatis. Nam ut nunc libero. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Phasellus volutpat ultricies enim. Nullam luctus odio urna, vitae posuere justo semper in." ["user_post"]=> string(329) "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse tincidunt neque in erat vestibulum, sed gravida odio venenatis. Nam ut nunc libero. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Phasellus volutpat ultricies enim. Nullam luctus odio urna, vitae posuere justo semper in." [4]=> string(19) "2013-11-22 00:00:00" ["post_date"]=> string(19) "2013-11-22 00:00:00" [5]=> string(12) "Post-an-idea" ["post_page"]=> string(12) "Post-an-idea" [6]=> NULL ["additional_details"]=> NULL [7]=> string(1) "0" ["up_votes"]=> string(1) "0" [8]=> string(1) "0" ["down_votes"]=> string(1) "0" [9]=> NULL ["voted_users"]=> NULL [10]=> string(1) "1" ["is_valid"]=> string(1) "1" [11]=> string(6) "active" ["post_status"]=> string(6) "active" } 
+1

В таблице page_posts отсутствует столбец «user_post». –

+0

О, но я знаю, я уже дважды проверил это. –

+0

Укажите структуру таблицы, пожалуйста, а также сообщите нам, какая строка - строка 15, это ** $ row ['user_post'] **, потому что мы можем догадаться, но знание помогает – nrathaus

ответ

4

Вы должны перебирать строки, а не colums одного и того же ряда.

<?php 
    $db = new mysqli("xxxxxxxxxxxxxxx", "xxxxxxxx", "xxxxxxxxxxxxxx", "xxxxxxxxx"); 
    if($db->connect_errno > 0) { 
    die('Unable to connect to database [' . $db->connect_error . ']'); 
    } 

    $sql = "SELECT * FROM page_posts"; 
    $post_arr = array(); 
    $post_arr = $db->query($sql); 

    while ($row = $post_arr->fetch_assoc()) 
    { 
    echo $row['user_post']; 
    } 
?> 
+0

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

2

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

foreach() loop

поэтому

$post_rows must be an array. you are using it as variable.

так просто используйте следующий код

$post_arr[] = $db->query($sql);
$post_rows[] = $post_arr->fetch_array();

все остальное идеально.

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