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'] 不为空的情况下运行。

如何才能做到这一点?

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();

例如

$价值=假;

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 的替代方法是空的,它将检查数组是否为空,因此由于它总是被发布,我们在运行 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 回答