繁体   English   中英

错误:PHP中的非法字符串偏移

[英]Error: Illegal String Offset in 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" }

您应该遍历行而不是同一行的列。

<?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'];
  }
?>

回复已经很晚了,但是我仍然想分享这个..

foreach()循环

因此

$ post_rows必须是一个数组。 您将其用作变量。

所以只要使用下面的代码

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

其他一切都很完美。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM