0

私はサイトのキャリア部分を構築している最中であり、まだ構築していないアプリと通信するためにこのPHPを作成しました。問題は、json_encodeを実行すると、データベースの最初の行のみが表示されることです。正しい方向へのポインタをいただければ幸いです。ありがとう、ジョーダン

<?php

error_reporting(E_ALL);

ini_set('display_errors', '1');

//variables
$server = 'localhost';
$user = 'root';
$password = '';
$db = 'starkdb';

// Connect to Database   
$connection = mysql_connect($server, $user, $password)
    or die ("Could not connect to server ... \n" . mysql_error ());

mysql_select_db($db)
    or die ("Could not connect to database ... \n" . mysql_error ());



//Check if the skill has been updated. If it has, process and save it to the database
//POST update
if (isset($_POST['update']))
{
    //Confirm that the 'id' value is a valid integer before getting the data
    if (is_numeric($_POST['id']))

    {
        //Retrieve the data
        $id = $_POST['id'];
        $title = mysql_real_escape_string(htmlspecialchars($_POST['title']));
       $description =                                                                                                              mysql_real_escape_string(htmlspecialchars($_POST['description']));

        //Error check both fields
        if ($title == '' || $description == '')
        {
            $error = 'ERROR: Please fill in all Fields!';
        }
        else
        {
            //Update data to database
            mysql_query("UPDATE skill SET title='$title', description='$description' WHERE id='$id'")
            or die (mysql_error());
            $row = mysql_fetch_array($result);
        }
    }
    //POST create
    else
    {

        //Get data, making sure it is valid
        $title = mysql_real_escape_string(htmlspecialchars($_POST['title']));
        $description = mysql_real_escape_string(htmlspecialchars($_POST['description']));

        //Error check both fields
        if ($title == '' | $description == '')
        {
            $error = 'ERROR: Please fill in all Fields!';
        }
        else
        {
            //Save new skill to database
            mysql_query("INSERT skill SET title='$title', description='$description'")
            or die(mysql_error());
            $row = mysql_fetch_array($result);
        }
    }
  }
  //GET ID
  else
  {
    //Get the id value from URL 
    if (isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id'] > 0)
    {
        //Query DB
        $id = $_GET['id'];
        $result = mysql_query("SELECT * FROM skill WHERE id=$id") or     die(mysql_error());
        $row = mysql_fetch_array($result);

        if($row)
        {
            $title = $row['title'];
            $description = $row['description'];
        }

    }
    //GET list
    else
    {
        $result = mysql_query("SELECT * FROM skill") or die(mysql_error());
        $row = mysql_fetch_array($result);
    }
}

//Encode data and display with JSON
echo json_encode($row);
?>
4

2 に答える 2

2

mysql_fetch_arrayデータベースから一度に1行だけプルするので、次のようにループで繰り返す必要があります。

<?php
$rows = array( ); // Initialise an empty array
while( $row = mysql_fetch_array( $result ) ) { // Loop over the database iterator
    $rows[] = $row; // Append the row to the array of rows
}

echo json_encode( $rows ); // Output the json encoded array of rows
?>

詳細については、PHPのmanページを参照してください:http://php.net/manual/en/function.mysql-fetch-array.php

于 2012-05-30T12:43:11.257 に答える
0
$array_of_rows = array();

while ($row = mysql_fetch_array($result)) {
  array_push($array_of_rows, $row);
}

echo json_encode($array_of_rows);

...またはそのようなもの。

于 2012-05-30T12:45:48.233 に答える