php - PHP 'For Each' 将行从数组或字符串插入 mysql
问题描述
我正在尝试根据数组将多行插入到表中……每个 $value 都是逗号分隔的值。
我知道这不是最好的方法,甚至不是正确的方法——只是试图获得一些关于如何以正确的方式实现这一目标的指导。
$someArray=array(96,97,98,99,100,101,103,105);
foreach($someArray as $value){
$sql = "INSERT INTO bid_package(user_company) VALUES('".$value."');";
echo $sql;
echo "<br />";
INSERT INTO bid_package(user_company) VALUES('96');
INSERT INTO bid_package(user_company) VALUES('97');
INSERT INTO bid_package(user_company) VALUES('98');
INSERT INTO bid_package(user_company) VALUES('99');
INSERT INTO bid_package(user_company) VALUES('100');
INSERT INTO bid_package(user_company) VALUES('101');
INSERT INTO bid_package(user_company) VALUES('103');
INSERT INTO bid_package(user_company) VALUES('105');
解决方案
首先,您应该使用准备好的语句,而不是直接将变量插入到查询中。这是做你正在尝试的事情的一种方法。
$mysqli = new mysqli('localhost', 'user', 'password', 'mysampledb'); // your mysqli handle
$stmt = $mysqli->prepare("INSERT INTO SampleTable VALUES (?)"); // prepare your query
//bind value as a reference
$stmt->bind_param('s', $val);
//define values
$someArray=array(96,97,98,99,100,101,103,105);
//loop through values
foreach($someArray as $val) {
//execute statement
$stmt->execute();
}
如果您曾经将数据传递给查询,则应使用准备好的语句。
推荐阅读
- ksqldb - KSQL使用键中的空格创建流
- graalvm - 如何将 Map 从 Java 传递到 graal.js?
- dart - 无法添加到 onTap 中的集合中
- sql - 加入光标
- python - App.get_running_app().root.my_method() - 'NoneType' 对象没有属性 'my_method()
- javascript - 'arguments' 关键字是指最外层还是最内层的函数参数?
- laravel - orWhereHas 取消了我的其他 Where 条件
- json - 使用 Sqlite3 检索 Jason 对象
- react-native - 在 Jest 上模拟 react-native-async-storage
- java - 如何为Spring中的每个请求添加@Async方法的延迟