1

mysql データベースに行を INSERT しようとすると、この奇妙な問題が発生します。

これがアイデアです。エクササイズの範囲が表示され、数量を追加して、このエクササイズを追加したい日 (日、月、火、水、木、金、土) をチェックすると、日記に追加されます。

これは私のコードです。

$addDiary = array();
$addTimestamp = array();
$addDiary[] = '('.$current_user->id.', '.$_POST['exid_'.$i].', '.$_POST['qty_'.$i].', '.$calories_mod.', '.implode('.', $addTimestamp).')';             
$queryAddDiary = mysql_query("INSERT INTO LHNZ_FT_DIARY (USER_ID, EXERCISE_ID, TIME, CALORIES, TIMESTAMPS) VALUES ".implode(',', $addDiary));

addDiary 配列と addTimestamp 配列をエコーアウトしましたが、問題ないように見えます。

$addTimestamp: 1311206400.1311292800.1311379200

$addDiary: (2, 1, 1, 678, 1311206400.1311292800.1311379200)

$addTimestamp 配列の長さが 1 または 2 の場合、このクエリはうまく機能しますが、長さが 2 を超えると、このエラーが発生します。

SQL 構文にエラーがあります。1 行目の '.1311379200)' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

今。「.」を使用すると、このエラーが表示されます。または ':' $addTimestamp の内破として。文字または「_」を使用すると、このエラーが発生します。

「フィールド リスト」の不明な列「1311206400_1311292800_1311379200」

長さが 2 より大きい $addTimestamp をどのように使用できるかについてのアイデア (つまり、週に 3 日その演習を行うことができます... これがエラーの場所です)。

ありがとう、

  • レイトン
4

1 に答える 1

1

MySQL クエリの文字列値は、一重引用符で囲む必要があります。

それ以外の:

$addDiary[] = '('.$current_user->id.', '.$_POST['exid_'.$i].', '.$_POST['qty_'.$i].', '.$calories_mod.', '.implode('.', $addTimestamp).')'; 

行う:

$addDiary[] = '('.$current_user->id.', '.$_POST['exid_'.$i].', '.$_POST['qty_'.$i].', '.$calories_mod.", '".implode('.', $addTimestamp)."')"; 

SQLクエリに貼り付ける前に、すべての値をmysql_real_escape_string () に渡すことも強くお勧めします。

于 2011-07-17T09:09:04.867 に答える