使用php在sql数据库中插入多行
在检查了几个条件之后,我想用php在使用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 !
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
数组中增加行即可。如果您觉得问题已得到回答,请务必勾选以下答案:帮助最大,所以其他人不会一直认为它还开着。干杯!