2013-11-25 78 views
-1

我一直在穩步發展我的網站,直到我得到這個錯誤:錯誤:非法串偏移在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雖然我不知道爲什麼我得到這個downvote,這可以是非常有用的新手。 –

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();

一切都很完美。