4

データベースで選択した日付を挿入できるこのコードがあります。これで、すべてではなく1つの値だけが挿入され、最初の値で停止するようになります。

私が間違っていることを教えてください。

ありがとう!

$job_id=$_REQUEST['job_id'];

$dates = explode(",", $_POST['altField']);
foreach($dates as $date){
$sql="INSERT INTO date (job_id,date) VALUES('$job_id','$date')";
mysql_query($sql);
}
4

3 に答える 3

1
$job_id=$_REQUEST['job_id'];

$dates = explode(",", $_POST['altField']);
$values_arr = array();    
foreach ($dates as $date) {
    $values_arr[] = "('" . $job_id . "','" . $date . "')";
}
$values = implode(", ", $values_arr);

$sql="INSERT INTO date (job_id,date) VALUES $values";
mysql_query($sql);
于 2012-08-31T13:39:38.340 に答える
0
$job_id=$_REQUEST['job_id'];

$dates = explode(",", $_POST['altField']);
foreach($dates as $date){
    $values .= '("'.$job_id.'","'.$date.'"),';
}
$sql="INSERT INTO date (job_id,date) VALUES " . substr($values, 0, -1);
mysql_query($sql);

挿入には複数の値セットを含めることができるため、foreachに値を設定してから、その外部でクエリを実行する必要があります。この方法で同じ結果を得ることができます。

$job_id=$_REQUEST['job_id'];

$dates = explode(",", $_POST['altField']);
foreach($dates as $date){
    $values[] = '("'.$job_id.'","'.$date.'")';
}
$sql="INSERT INTO date (job_id,date) VALUES " . implode(',',$values);
mysql_query($sql);

リマインダー

常に入力をサニタイズします。そうしないと、SQLインジェクションが発生し、大きな問題が発生する可能性があります。これを見てください また、mysqlは維持されておらず、MySqliまたはPDOに切り替えることをお勧めします。

于 2012-08-31T13:29:03.593 に答える
-1

試す:

$sql = "INSERT INTO date SET job_id='".$job_id."', date='".$date."'";
mysql_query($sql);
于 2012-08-31T13:29:55.747 に答える