0

私はこれを持っていますPHP loop

foreach($_POST['af_break_date'] as $id=>$value) {
    $update_break_date_query = "UPDATE studentdates SET student_break_date = '$value' WHERE student_date_id = '$id';";
    $update_break_date_sql = mysql_query($update_break_date_query) or die(mysql_error());
}

$update_break_date_sqlそれぞれ$_POST['af_break_date'] nullでない場合にのみ実行したい。

これはどのように行うことができますか?

4

6 に答える 6

3
foreach($_POST['af_break_date'] as $id=>$value)
{
    if($value != '')
    {
        $update_break_date_query = "UPDATE studentdates SET student_break_date = '$value' WHERE student_date_id = '$id';";
        $update_break_date_sql = mysql_query($update_break_date_query) or die(mysql_error());
    }
 }

生のユーザー入力をクエリに追加しているため、SQL インジェクションに対して保護することを忘れないでください。PDO または MySQLi とパラメータ化されたクエリを見てください。

于 2012-11-30T12:36:15.950 に答える
1

使用するisset

if(isset($_POST['af_break_date'] && 
strlen(implode("",$_POST['af_break_date']))>0)
{
....
...
}
于 2012-11-30T12:35:34.960 に答える
0
if( isset( $_POST['af_break_date'] ) && is_array(  $_POST['af_break_date'] )) {
    foreach($_POST['af_break_date'] as $id=>$value) {
        $update_break_date_query = "UPDATE studentdates SET student_break_date = '$value' WHERE student_date_id = '$id';";
        $update_break_date_sql = mysql_query($update_break_date_query) or die(mysql_error());
    }
}
于 2012-11-30T12:38:38.907 に答える
0

!empty(); を使用します。

例えば

$value = false;

isset($value); //return true
!empty($value); //return false
于 2012-11-30T12:40:28.093 に答える
0

空の値を確認して回避する条件を追加するだけです

if($_POST['af_break_date']){
    foreach($_POST['af_break_date'] as $id=>$value) {
      if(!$value) continue;
      $update_break_date_query = "UPDATE studentdates SET student_break_date = '$value' WHERE student_date_id = '$id';";
      $update_break_date_sql = mysql_query($update_break_date_query) or die(mysql_error());
    }
}

関数は使用しないでくださいmysql_*。まもなく非推奨になります。代わりに、データベースの接続に mysqli または PDO を使用します。準備済みステートメントを使用して SQL インジェクションを回避し、その前にデータをデータベースに更新する前に検証を行います。

于 2012-11-30T12:40:40.823 に答える
0

isset の代替は empty で、配列が空かどうかをチェックします。したがって、常にポストされるため、foreach ループを実行する前に空かどうかをチェックします。

if (!empty($_POST['af_break_date']) && is_array($_POST['af_break_date'])) {
    foreach($_POST['af_break_date'] as $id=>$value) {
        $update_break_date_sql = mysql_query("UPDATE studentdates SET student_break_date = '$value' WHERE student_date_id = '$id'") or die(mysql_error());
    }
}
于 2012-11-30T12:42:19.530 に答える