- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个项目,我要使用 PHP 和 HTML 表单将一个大型 CSV 文件(200 个字段)上传到数据库中。在一些帮助下,我终于让它工作了,它将所有 200 个字段提交到 MySQL Workbench 中的一个暂存表中,这是我最大的障碍。我已经设置了我的代码来拆分元素,将一些元素放在一个表中,一些放在另一个表中,最多 7 个表。我目前的问题是我们有一些重复。即,“meters”表和“costs”表有很多相同的变量。我在 PHP 中创建了一个列数组,列出了所有 200 个变量,并为每个数据库表创建了 7 个表数组。如果我注释掉除“暂存”表(每个变量只使用一次)之外的所有内容,它会正常提交并且我可以在 MySQL WB 中看到数据。但是,当我删除注释并为所有 7 个表(多次使用某些变量)运行语句时,不会插入任何内容。难道不能在 PHP 中运行一条 SQL 语句来插入多个表,尤其是多次使用变量吗?
代码示例:
$file = $_FILES['file']['tmp_name'];
$handle = fopen($file, "r");
$filesop = fgetcsv($handle, 0, ",");
$coldata = array();
$coldata['orderNumber'] = $filesop[0];
$coldata['place'] = $filesop[1];
$coldata['workOrderNum'] = $filesop[2];
$coldata['lowSideMIUNum'] = $filesop[3];
$coldata['highSideMIUNum'] = $filesop[4];
$coldata['accountNum'] = $filesop[5];
$coldata['custName'] = $filesop[6];
$coldata['address'] = $filesop[7];
$table_cols = array();
/*staging*/
$table_cols[0] = 'orderNumber,place,workOrderNum,lowSideMIUNum,highSideMIUNum'
/*clients*/
$table_cols[1] ="orderNumber,place,workOrderNum,lowSideMIUNum"
/*meters*/
$table_cols[2] ="workOrderNum,lowSideMIUNum,highSideMIUNum,accountNum"
$tablenames = array("staging","clients","meters");
for($tableno = 0;$tableno < sizeof($tablenames);$tableno++){
$q = "";
$col_list = '`'.str_replace(',','`,`',$table_cols[$tableno]).'`';
$q .= "INSERT INTO ".$tablenames[$tableno]." (".$col_list.") VALUES (";
$cols = explode(",",$table_cols[$tableno]);
$data = array();
foreach($cols as $key => $fldname) {
$data[] = "'".$coldata[$fldname]."'";
}
$q .= implode(",",$data).");";
echo "<p>\$q:<pre>".print_r($q,true)."</pre></p>\n";
}
if(mysqli_query($connect, $q)) { echo'File submitted'; } else { /*var_dump($q)*/echo "Error: " . mysqli_error($connect); }
最佳答案
您不能使用 mysqli_query
运行整批查询。试试 mysqli_multi_query()
我有一个其他人发现有用的可靠代码块:Strict Standards: mysqli_next_result() error with mysqli_multi_query
针对您的情况:
if(mysqli_multi_query($connect,$q)){
do{
$cumulative_rows+=mysqli_affected_rows($connect);
} while(mysqli_more_results($connect) && mysqli_next_result($connect));
}
if($error_mess=mysqli_error($connect)){
echo "Syntax Error: $error_mess";
}elseif($cumulative_rows!=sizeof($tablenames)){
echo "Logic Error";
}
如果您想对查询的成功/失败反馈进行个性化设置,请参阅我上面的链接,了解有关将查询声明为数组元素并回显结果的说明。
关于PHP - SQL 语句中的多个变量用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43059393/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 6年前关闭。 Improve this qu
我有实体: @Entity @Table(name = "CARDS") public class Card { @ManyToOne @JoinColumn(name = "PERSON_I
我正在尝试计算二维多边形的表面法线。我正在使用 OpenGL wiki 中的 Newell 方法来计算表面法线。 https://www.opengl.org/wiki/Calculating_a_S
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 7 年前。 Improve
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我这里有以下 XML: Visa, Mastercard, , , , 0, Discover, American Express siteonly, Buyer Pay
即将发生的 Google 政策变更迫使我们实现一个对话框,以通知欧盟用户有关 Cookie/设备标识符用于广告和分析的情况。我只想向欧盟用户显示此对话框。我不想使用额外的权限(例如 android.p
本文分享自华为云社区《华为大咖说 | 企业应用AI大模型的“道、法、术” ——道:认知篇》,作者:华为云PaaS服务小智。 本期核心观点 上车:AGI是未来5~10年内,每个人都无法回避的技
我有一个与酒精相关的网站,需要先验证年龄,然后才能让他们进入该网站。我使用 HttpModule 来执行此操作,该模块检查 cookie,如果未设置,我会将它们重定向到验证页面。我验证他们的年龄并存储
在欧盟,我们有一项法律,要求网页请求存储 cookie 的许可。我们大多数人都了解 cookie 并同意它们,但仍然被迫在任何地方明确接受它们。所以我计划编写这个附加组件(ff & chrome),它
以下在 C 和/或 C++ 中是否合法? void fn(); inline void fn() { /*Do something here*/ } 让我担心的是,第一个声明看起来暗示函数将被定义
我是一名优秀的程序员,十分优秀!