Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php在sql数据库中插入多行_Php_Mysql_Sql - Fatal编程技术网

使用php在sql数据库中插入多行

使用php在sql数据库中插入多行,php,mysql,sql,Php,Mysql,Sql,在检查了几个条件之后,我想用php在sql中插入多行 条件是,如果“cat”和“preview”不为空,则提交第一行,如果“cat”、“preview”、“cat2”、“preview2”不为空,则提交两行,第一行的值为“cat”,第二行的值为“cat2”和“preview2” 我尝试了这些代码,但我看到了-未定义的变量:sql 我的情况怎么了? 您的代码有一个查询错误,您想在一个insert命令中插入两行。请使用此代码分隔insert命令: else if(!empty($cat) and !

在检查了几个条件之后,我想用php在
sql
中插入多行

条件是,如果“cat”和“preview”不为空,则提交第一行,如果“cat”、“preview”、“cat2”、“preview2”不为空,则提交两行,第一行的值为“cat”,第二行的值为“cat2”和“preview2”

我尝试了这些代码,但我看到了-未定义的变量:
sql

我的情况怎么了?
您的代码有一个查询错误,您想在一个insert命令中插入两行。请使用此代码分隔insert命令:

else if(!empty($cat) and !empty($preview) and
!empty($cat2) and !empty($preview2))
{  
$sql = "INSERT INTO files (cat, preview, file, art) VALUES 
                      ('".$cat."','".$preview."','".$file."','".$art."');";
$sql .= " INSERT INTO files (cat, preview, file, art) VALUES ('".$cat2."','".$preview2."','".$file2."','".$art2."');";
}

您的代码有一个查询错误,您想在一个insert命令中插入两行。请使用此代码分隔insert命令:

else if(!empty($cat) and !empty($preview) and
!empty($cat2) and !empty($preview2))
{  
$sql = "INSERT INTO files (cat, preview, file, art) VALUES 
                      ('".$cat."','".$preview."','".$file."','".$art."');";
$sql .= " INSERT INTO files (cat, preview, file, art) VALUES ('".$cat2."','".$preview2."','".$file2."','".$art2."');";
}

插入带有
的查询不是一个查询

比如说

Insert into mytable (a,b,c) values (1,2,3); 
Insert into mytable (a,b,c) values (4,5,6); 
Insert into mytable (a,b,c) values (7,8,9);
不是一个查询,这是3个插入查询

也就是说,当插入值(4,5,6)出现错误时,值(1,2,3)查询将成功

我们希望,如果一行失败,则所有插入查询都会失败

因此,我们不使用
编写插入查询

查询示例:

Insert into mytable values(1, 2, 3), (4, 5, 6), (7, 8, 9);

插入带有
的查询不是一个查询

比如说

Insert into mytable (a,b,c) values (1,2,3); 
Insert into mytable (a,b,c) values (4,5,6); 
Insert into mytable (a,b,c) values (7,8,9);
不是一个查询,这是3个插入查询

也就是说,当插入值(4,5,6)出现错误时,值(1,2,3)查询将成功

我们希望,如果一行失败,则所有插入查询都会失败

因此,我们不使用
编写插入查询

查询示例:

Insert into mytable values(1, 2, 3), (4, 5, 6), (7, 8, 9);

我个人认为,你的条件逻辑可能需要重新思考。例如,如果将值保存到数组中,则可以自动执行此过程:

// Save first values
$sqlArgs[]  =   array($cat,$preview,$file,$art);
// Save second values
$sqlArgs[]  =   array($cat2,$preview2,$file2,$art2);
// Loop through each row.
foreach($sqlArgs as $key => $array) {
    // If the `cat` or the `preview` empty, skip
    if(!empty(trim($array[0])) && !empty(trim($array[1])))
        $sql[]  =   "'".implode("','",$array)."'";
}
// If the sql has rows continue
if(!empty($sql)) {
    // Build the statement rows with implode() of values.
    // This assumes these are not user-input values or that you have
    // thoroughly sanitized the values.
    $statement  =   "INSERT INTO `files` (`cat`,`preview`,`file`,`art`) VALUES (".implode("),(",$sql).")";
    // Preview statement 
    print_r($statement);
}

这种方法将根据填充的两个键
cat
&
preview
处理0、1或2次插入(或更多,如果需要)。

我个人认为,您的条件逻辑可能需要重新思考。例如,如果将值保存到数组中,则可以自动执行此过程:

// Save first values
$sqlArgs[]  =   array($cat,$preview,$file,$art);
// Save second values
$sqlArgs[]  =   array($cat2,$preview2,$file2,$art2);
// Loop through each row.
foreach($sqlArgs as $key => $array) {
    // If the `cat` or the `preview` empty, skip
    if(!empty(trim($array[0])) && !empty(trim($array[1])))
        $sql[]  =   "'".implode("','",$array)."'";
}
// If the sql has rows continue
if(!empty($sql)) {
    // Build the statement rows with implode() of values.
    // This assumes these are not user-input values or that you have
    // thoroughly sanitized the values.
    $statement  =   "INSERT INTO `files` (`cat`,`preview`,`file`,`art`) VALUES (".implode("),(",$sql).")";
    // Preview statement 
    print_r($statement);
}

此方法将根据正在填充的两个键
cat
&
preview
处理0、1或2次插入(必要时可进行多次插入)。

请解释您的答案。它显示错误:插入文件(cat、preview、file、art)值('Dj Vol','Dj song 1','file.mp3','')插入文件(cat、preview、file、art)值('Dj Vol 2'、'Dj song 2'、'file2.mp3'、'#2')您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解使用“插入到文件(cat、预览、文件、艺术)值附近的正确语法('Dj Vol 2','Dj song 2','file'在第行1@Swister我编辑了代码并使用它让我知道结果
一些查询错误
…请避免这样的陈述,相反,你应该提到错误是什么…假设你的答案是-1!错误:插入文件(cat、预览、文件、艺术)值('Dj Vol 2'、'Dj song 1'、'file.mp3'、'');插入到文件(cat、预览、文件、艺术)值('Dj Vol 2'、'Dj song 2'、'file2.mp3'、'#2');您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以获取使用“插入到文件(cat、预览、文件、艺术)值”附近的正确语法('Dj Vol 2'、'Dj song 2'、'file'在第1行请解释您的答案。它显示错误:插入文件(cat、预览、文件、艺术)值('Dj Vol 2'、'Dj song 1'、'file.mp3'、'')插入文件(cat、预览、文件、艺术)值('Dj Vol 2'、'Dj song 2'、'file2.mp3'、'2')您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解使用“插入文件(cat、预览、文件、艺术)”值的正确语法('Dj Vol 2','Dj song 2','file'在第行1@Swister我编辑了代码并使用它让我知道结果
一些查询错误
…请避免这样的陈述,相反,你应该提到错误是什么…假设你的答案是-1!错误:插入文件(cat、预览、文件、艺术)值('Dj Vol 2'、'Dj song 1'、'file.mp3'、'');插入到文件(cat、预览、文件、艺术)值('Dj Vol 2'、'Dj song 2'、'file2.mp3'、'#2');您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以获取使用“插入到文件(cat、预览、文件、艺术)值”附近的正确语法('Dj Vol 2','Dj song 2','file'在第行1@Swister我的答案对你有用吗?@Swister我的答案对你有用吗?有用@Rasclatt…你能说三行或更多行该怎么做吗?很难说,因为你没有剩余的代码,所以我不知道你如何分配
$cat
$preview
$cat2
$preview2
。不过这很简单。只需在
$sqlArgs
数组中增加行数即可。如果您觉得问题已经得到了回答,请务必勾选最有帮助的答案,这样其他人就不会一直认为它仍然打开。干杯!它起作用了@Rasclatt…您能为三行或更多行做些什么吗?是的很难说,因为您没有剩余的代码,所以我不知道如何分配
$cat
$preview
$cat2
$preview2
。不过这很简单。只需在
$sqlArgs
数组中增加行即可。如果您觉得问题已得到回答,请务必勾选以下答案:帮助最大,所以其他人不会一直认为它还开着。干杯!