0

データベースに保存されているレコードを表示しようとしています。PHPでのコードは次のとおりです。

<?php
include("includes/connect.php");
$user_id = $_GET['user_id'];
$recipe_id = $_GET['recipe_id'];

$sql_check = "select * from user_favorites where user_id = '$user_id' and recipe_id = '$recipe_id'";
$query_check = mysql_query($sql_check);

$result_array = array();
while ($row = mysql_fetch_assoc($query_check)) {
$user_id = $row["user_id"];
$recipe_id = $row["recipe_id"];

$result_array[]= array("user_id"=> $user_id, "recipe_id"=> $recipe_id);
$json_encoded = json_encode($result_array);
echo "addToCallback(". $json_encoded.")";
}
?>

出力:addToCallback([{"user_id": "0"、 "recipe_id": "0"}])

データベーステーブルにすでにレコードが保存されていますが、なぜ0しか表示されないのですか?テーブルに「0」の入力がありません。コードに問題はありますか?

ありがとう!

4

3 に答える 3

0

コードには3つの問題があります。

  1. クエリパーツを適切にフォーマットしていません
  2. 起こりうるエラーをチェックしていません
  3. 間違った配列をエンコードしている可能性があります

項目2は必須です。発生したすべてのエラーを常に通知する必要があります。これにより、適切なアクションを実行して問題を修正できます。 エラーメッセージがなければ、あなたは盲目で耳が聞こえません。

だから、ここに改良されたバージョンがあります。
エンコードされたデータまたはmysqlエラーのいずれかが返されます(display_errorsがオンになっている場合。それ以外の場合、エラーはWebサーバーのerror_logに記録されます)。
データもエラーメッセージも表示されない場合、クエリは行を返しませんでした。

<?php
error_reporting(E_ALL);
include("includes/connect.php");
$user_id   = mysql_real_escape_string($_GET['user_id']);
$recipe_id = mysql_real_escape_string($_GET['recipe_id']);

$sql = "select * from user_favorites where user_id = '$user_id' and recipe_id = '$recipe_id'";
$res = mysql_query($sql) or trigger_error(mysql_error()."[$sql]");

$data = array();
while ($row = mysql_fetch_assoc($res)) {
    $data[] = $row;
}
$json_encoded = json_encode($result_array);
echo "addToCallback(". $json_encoded.")";
于 2013-02-25T09:54:25.930 に答える
0
  1. すべてのGET値を取得していることを確認してください

  2. 変化 :

$sql_check = "select * from user_favorites where user_id = '$user_id' and recipe_id = '$recipe_id'";

に :

$sql_check = "select * from user_favorites where user_id = '".mysql_real_escape_string($user_id)."' and recipe_id = '".mysql_real_escape_string($recipe_id)."'";

echo $sql_checkphpmyadminで実行し、出力を確認します

于 2013-02-25T09:54:41.703 に答える
0

コードをテストして、既存の電話をかけました

test.php?user_id = 1&recipe_id = 5

addToCallback([{"user_id": "1"、 "recipe_id": "5"}])

存在しない呼び出しは私に何も返しませんでした:]

于 2013-02-25T10:08:38.363 に答える