2

準条件付き挿入を機能させようとしています。データベースには 3 つの異なるタイプの要素があり、created_at の日付は一意のキーです。データベースを構築した担当者は、各テーブル (レッスン、シリーズ、パッケージ) に同じ構造を使用していたため、一意の値については created_at フィールドに依存する必要があります。

新しい行を挿入したいのですが、それが purchase_lessons テーブルにあるのか、 purchase_series テーブルにあるのか、 purchase_packages テーブルにあるのかわかりません。私は $item_current (これは $_POST から返される日付です - 別のセクションで作業しています) を知っており、$user_id (同じ理由) も知っています。しかし、これは新しい行を挿入していません:

$is_lesson = mysql_real_escape_string(mysql_query("SELECT id FROM lessons WHERE created_at LIKE \"$item_current\""));
$is_series = mysql_real_escape_string(mysql_query("SELECT id FROM series WHERE created_at LIKE \"$item_current\""));
$is_package = mysql_real_escape_string(mysql_query("SELECT id FROM packages WHERE created_at LIKE \"$item_current\""));
$lesson_rows = mysql_num_rows($is_lesson);
$series_rows = mysql_num_rows($is_series);
$package_rows = mysql_num_rows($is_package);
$lesson_result = mysql_fetch_array($is_lesson);
$series_result = mysql_fetch_array($is_series);
$package_result = mysql_fetch_array($is_package);
$lesson_id_to_insert = $lesson_result['id'];
$series_id_to_insert = $series_result['id'];
$package_id_to_insert = $package_result['id'];

if ($lesson_rows > 0) {
    mysql_query("INSERT INTO purchased_lessons VALUES ($user_id,$lesson_id_to_insert])");
} else if ($series_rows > 0) {
    mysql_query("INSERT INTO purchased_series VALUES ($user_id,$series_id_to_insert)");
} else if ($package_rows > 0){
    mysql_query("INSERT INTO purchased_packages VALUES ($user_id,$package_id_to_insert)");
}

近すぎて木を見て森が見えないのかな。挿入を実行しません。

4

3 に答える 3

0

コードの先頭にも間違っているので、次のように変更して戻り値mysql_real_escape_stringから外してください。mysql_query

$is_lesson = mysql_real_escape_string(mysql_query("SELECT id FROM lessons WHERE created_at LIKE \"$item_current\""));

読む

$is_lesson = mysql_query("SELECT id FROM lessons WHERE created_at LIKE \"$item_current\"");
于 2013-07-08T13:12:01.563 に答える
0

このようにしてみてください:

mysql_query("INSERT INTO purchased_lessons VALUES (\"$user_id\",\"$lesson_id_to_insert\")");

各挿入クエリに引用符を追加します。

于 2013-07-08T13:09:23.413 に答える