我有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']
。
如何做到这一点?
答案 0 :(得分: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和参数化查询。
答案 1 :(得分:1)
使用isset
if(isset($_POST['af_break_date'] &&
strlen(implode("",$_POST['af_break_date']))>0)
{
....
...
}
答案 2 :(得分: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());
}
}
答案 3 :(得分:0)
使用!empty();
例如
$ value = false;
isset($value); //return true
!empty($value); //return false
答案 4 :(得分: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注入,然后在将数据更新到数据库之前进行验证。
答案 5 :(得分: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());
}
}