php - 限制 Foreach 循环插入空白 MySQL 行

标签 php mysql arrays insert restrict

我有一个问题。我有一堆共享相同名称的输入。这会创建放置在数据库中的数组,并且一切正常,但我在试图防止输入的空白​​行在数据库表中创建空白条目时遇到了一个主要的难题。

代码如下:

foreach($_POST['datetime'] as $dbrow=>$startdate) {
if(isset($_POST['def'])) {
$start = $startdate; 
$abc = $_POST['abc'][$dbrow];
$def = $_POST['def'][$dbrow];
$ghi = $_POST['ghi'][$dbrow];


$db_insert = "INSERT INTO tablename (start, abc, def, ghi) VALUES('$start', '$abc', '$def', '$ghi')";

这很好,但我无法让 if 语句工作。使用 POST 获取用户信息的表单有 5 行输入,每行有四列(start、abc、def、ghi)。如果我在表单中输入数据并提交,那么所有数据都会进入数据库(是的 - 成功),如果我只在第 1-4 行输入数据,那么数据库仍会输入 5 行数据。我做错了什么?

--------------------编辑-------------------- 好吧,在更深入的研究中,似乎正在发生的事情是代码一直想要提交所有动态生成的输入行,无论它们是否包含内容。所以我设计了以下代码:

$db_tur = count(array_filter($start_date));
for($db_total_used_rows=0;$db_total_used_rows<=$db_tur;$db_total_used_rows++){


$db_start_date = $_POST['datetime'][$db_total_used_rows]; 
$db_abc = $_POST['abc'][$db_total_used_rows];
$db_def = $_POST['def'][$db_total_used_rows];
$db_ghi = $_POST['ghi'][$db_total_used_rows];


}

$db_insert = .....;

从理论上讲,它所做的是 $db_tur 计算在 start_date 变量下使用的所有输入。然后我将它分解成一个计数数组,该数组应该可以用作 $db_total_used_rows。然而,这似乎并没有限制插入数据库的输入行总数。所以我想它又回到了绘图板,除非其他人对如何实现这一点有更好的想法。我现在已经准备好放弃了。

最佳答案

使用这个循环结构:

foreach ($_POST['datetime'] as $dbrow => $start) {
    $abc = $_POST['abc'][$dbrow];
    $def = $_POST['def'][$dbrow];
    $ghi = $_POST['ghi'][$dbrow];
    if (!empty($abc) && !empty($def) && !empty($ghi) && !empty($start)) {
        $db_insert = ...;
        ...
    }
}

如果用户可以将某些字段留空,您可以将 && 更改为 || —— 它只会跳过所有字段都为空的行。

关于php - 限制 Foreach 循环插入空白 MySQL 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19254976/

相关文章:

php - 我应该使用html_entity_decode来转义Google Analytics(分析)自定义变量吗?

php - SQL:将 EXISTS() 与其他命令一起使用

PHP filemtime vs MySQL 最后更新时间戳用于 CMS 中的图像缓存

php 唯一/组关联数组

php - 在一个查询中从多个表中删除行

java - 在Java中从一维数组快速转换为二维

java - 创建 Java 类

python - 如何将 for 循环的结果存储为单个数组?

php - 如何从codeigniter事件记录中获取result_array列表到row_array中

mySql 在非唯一列上连接两个表