1

処理する次のコードに到達する単純なフォームがあります。

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>

チェックボックスが選択され、projectorフォームが送信されると、データベースから部屋のリストを取得して、PHP foreach ループを介してそれらを印刷できるようにしたいと考えていました。代わりに、次のようなエラーが表示されます。

注意: 配列から文字列への変換

部屋のリストを取得して foreach ループで出力するにはどうすればよいですか? mysql_num_rowsエコーアウトすると機能するため、5行のデータが返されることがわかっています。

4

3 に答える 3

6

echoパラメータとして文字列を取りますが、mysql_fetch_array配列を返します - あなたが受け取ったメッセージは、配列が文字列に変換されて出力されることを意味しますechovar_dumpを使用して配列を出力してみてください。

var_dump($row);

クエリによって返されたすべての行を出力するには、次のようなものを使用します。

while($row = mysql_fetch_array($myData)) {
    echo $row["room_name"]; // for example
}
于 2013-07-04T23:13:53.410 に答える
2

次のエラー メッセージが表示されます。

注意: 配列から文字列への変換

あなたがこれをやっているからです:

    $row = mysql_fetch_array($myData);
    echo $row;

がチェックされている場合projector

配列を使用してこのようなecho呼び出しを行うと、通知メッセージが表示されます。

次のようなことを試してみてください (たとえば):

while ($row = mysql_fetch_array($myData)) {
    var_dump($row);
    // or:
    // print_r($row);
}
于 2013-07-04T23:14:49.750 に答える
0

次のように、配列を文字列に変換することもできます。

    $arr = $_POST;
    echo implode(', ', $arr);
于 2016-12-14T22:23:13.570 に答える