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表单返回注意事项:数组到字符串的转换的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 PHP 错误“注意:数组到字符串的转换...”

注意:带日期的数组到字符串转换

注意:数组到字符串的转换

如何在PHP中返回Json数据

php给客户端返回数据注意。

Symfony 表单 - Choicetype - 错误“数组到字符串转换”