PHP表单返回注意事项:数组到字符串的转换
Posted
技术标签:
【中文标题】PHP表单返回注意事项:数组到字符串的转换【英文标题】:PHP form returns Notice: Array to string conversion 【发布时间】:2013-07-02 23:31:29 【问题描述】:我有一个简单的表单,它可以得到以下要处理的代码。
include("connect.php");
$items = array_key_exists('equipment', $_POST) ? $_POST['equipment'] : '';
if(!empty($items))
if ($_POST["equipment"] == "computer")
echo "checked computer!";
else if($_POST["equipment"] == "projector")
echo "checked projector!";
$sql = "SELECT room_name, day_avail, from_time, to_time, equip_name
FROM rooms
JOIN equipment ON (equipment.room_id = rooms.room_id)
JOIN room_availability ON (room_availability.room_id = rooms.room_id)
WHERE equip_name='Projector'
GROUP BY day_avail";
$myData = mysql_query($sql, $conn) or die(mysql_error());
$row = mysql_fetch_array($myData);
echo $row;
// echo mysql_num_rows($myData);
else if($_POST["equipment"] == "whiteboard")
echo "checked whiteboard!";
else if($_POST["equipment"] == "visualiser")
echo "checked visualiser!";
else if($_POST["equipment"] == "desk")
echo "checked desk!";
else
echo "> Sorry, You have not made a selection.";
通过 jQuery AJAX 调用调用表单,如下所示:
<script>
$('form').submit(function()
var str = $(this).serialize();
$.ajax(
url: "userLogic.php",
type: "post",
data: str,
cache: false
).done(function( html )
$("#rooms_wrap").append(html);
);
);
</script>
When the projector
checkbox is selected, and the form submitted, I was hoping to get the list of rooms out from the database, so that I may print them out via a PHP foreach loop.相反,我收到错误消息:
注意:数组到字符串的转换
如何获取房间列表,并在 foreach 循环中打印出来?我知道返回了 5 行数据,因为 mysql_num_rows
在我回显时有效。
【问题讨论】:
【参考方案1】:echo
将字符串作为参数,但 mysql_fetch_array
返回数组 - 您收到的消息意味着数组已转换为要由 echo
打印的字符串。尝试使用var_dump 打印出数组:
var_dump($row);
要打印出查询返回的所有行,请使用以下内容:
while($row = mysql_fetch_array($myData))
echo $row["room_name"]; // for example
【讨论】:
谢谢,确实打印出了数组,但是我怎样才能在页面上的 foreach 循环中使用它呢?【参考方案2】:您收到错误消息:
注意:数组到字符串的转换
因为你正在这样做:
$row = mysql_fetch_array($myData);
echo $row;
当projector
被选中时。
使用数组进行这样的echo
调用会为您提供通知消息。
尝试做这样的事情(例如):
while ($row = mysql_fetch_array($myData))
var_dump($row);
// or:
// print_r($row);
【讨论】:
【参考方案3】:您也可以像这样将数组转换为字符串:
$arr = $_POST;
echo implode(', ', $arr);
【讨论】:
以上是关于PHP表单返回注意事项:数组到字符串的转换的主要内容,如果未能解决你的问题,请参考以下文章