gpt4 book ai didi

php - 如何使用循环从 php 单元格中检索和显示包含对象的数组?

转载 作者:行者123 更新时间:2023-11-29 02:35:08 26 4
gpt4 key购买 nike

在 Flex 项目中,我有一个包含对象的数组。我想将这个数组连同一些其他基本信息(如标题和 ID)一起保存在 mysql 表的单元格中。

编辑:只是澄清一下,因为我似乎收到了解释如何回显所有行的回复...我正在尝试回显序列化并放置在单个单元格中的数组的内容。该数组中有对象。

所以,我这里有这段代码来序列化数组,并将它与其他信息一起插入到我的数据库中:

function submitLogDbObj($array,$id,$title)
{
$title=mysql_real_escape_string($title);

return mysql_query("INSERT INTO logs (text,id,title) VALUES ('".serialize($array)."','$id','$title')");

}

然后为了测试,我正在尝试制作一个循环,以一种看起来像对话的方式显示日志...

我数组中的对象看起来像这样:

[1] 
icon = ""
msg = "this is a test"
name = "Them: "
systemMsg = 0
[2]
icon = ""
msg = "yep it sure is"
name = "You: "
systemMsg = 0

这就是我到目前为止所得到的,但它不起作用!我怎样才能创建一个循环,从数据库中获取该数组,将其反序列化,然后以类似于聊天记录的方式回显对话?

谢谢!

<?php

include_once("dbinfo.php");

$id= $_GET['id'];

$result = mysql_query("SELECT text,title FROM logs WHERE id='$id'")
or die(mysql_error());

$row = mysql_fetch_array($result);

if($result)
{

$log = unserialize($row['text']);

echo 'starting loop!';

echo "<ul>";

/* im not sure how to represent the length of an array in php thats why i just have $log.length */

for ($i = 1; $i <=$log.length; $i++)
{
echo "<div id='logbox'>";
echo "<li>";
$name=$log[$i]['name'];
$msg=$log[$i]['msg'];
echo "$name - $msg";
echo "</li>";
echo "</div>";
echo "<br />";
}
echo "</ul>";


echo 'finished loop!';

}
else
{
echo "Looks like this chat log has been deleted. Sorry!";
}

最佳答案

好吧,这里有一些地方可以做得更好:

  1. 数组的长度是通过count( $array )sizeof( $array )
  2. $value . $otherValue 表示连接这两个值。由于 length 在此上下文中未定义,$log.length 表示“$log.length”。
  3. 遍历数组的最佳方法是 foreach( $set as $val)foreach( $set as $key => $val )
  4. 遍历 SQL 结果的首选方法是 while 循环:while($row = mysql_fetch_array($result)){do... while (见下文)。除非您特别有意识地只想要一个,否则最好使用它。如果您只想要一个,则在查询中添加一个限制。
  5. 数据库中的序列化数组具有冗余的特点。你确定这是你想要的吗?
  6. 您的序列化数组在插入之前也应该通过 mysql_real_escape_string 运行。
  7. br 如果您将某物包围在它自己的 div 中,则确实不需要。
  8. 正确缩进或 kitten of death会来找你的。

改进后的代码:

$row = mysql_fetch_array($result);

// row could be empty if there were no results
if($row)
{
// we've already grabbed the first value, so we need
// to invert while into do... while.
do
{
$log = unserialize($row['text']);

echo "<ul>";

foreach( $log as $line )
{
// Are you sure this should be outside of the li?
echo "<div id='logbox'>";
echo "<li>";
$name=$line['name'];
$msg=$line['msg'];
echo "$name - $msg";
echo "</li>";
echo "</div>";
}
echo "</ul>";
}
while( $row = mysql_fetch_array($result) );

echo 'finished loop!';

}
else
{
echo "Looks like this chat log has been deleted. Sorry!";
}

关于php - 如何使用循环从 php 单元格中检索和显示包含对象的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6529495/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com