【问题标题】:insert multiple rows into mysql db using pdo使用 pdo 将多行插入 mysql db
【发布时间】:2014-08-08 16:17:24
【问题描述】:

我有一个格式如下的数组

Array
(
[0] => Array
    (
        [name] => Product 1
        [weight] => 0.3000
        [Price] => 31.4400
    )

[1] => Array
    (
        [name] => Product 2
        [weight] => 0.2000
        [Price] => 32.4400
    )

)

我的pdo sql查询如下:

$sql = "INSERT INTO products(name,weight,price) VALUES (?,?,?)"; 
$stmt = $conn->prepare($sql); 
foreach ($new_items as $v) {    
    $stmt->execute(array_values($v)); 
}

接收错误:

PHP 注意:$stmt->execute(array_values($v)); 上的数组到字符串转换

更新:

也试过@user1978142提供的这段代码

// insert to database
foreach($new_items as $key => $value) {
    $stmt = $conn->prepare("INSERT INTO products (name, weight, price) VALUES (:name, :weight, :price)");
    $stmt->bindParam(':name', $value['name']);
    $stmt->bindParam(':weight', $value['weight']);
    $stmt->bindParam(':price', $value['Price']);
    $stmt->execute();
}

错误:参数号无效:绑定变量的数量与标记的数量不匹配。

以上代码有什么问题??我是新手。

【问题讨论】:

  • @kevinabelita 它不工作
  • 我真的不喜欢电脑明显在撒谎。你的代码看起来不错。它显然准备好查询。它试图绑定显然是明智的事情,然后感到困惑。要检查的事情:首先,有隐含的参数类型:pdo.constants.php。检查您的表定义是否具有整数或字符串的简单数据列定义。接下来,var_dump($key, $value) 并检查数组名称和值是否符合您的预期。使用任何有用的信息更新您的答案。
  • @RyanVincent 电脑从不撒谎。
  • @YourCommonSense,我完全同意!我应该更清楚地表明它正在变得混乱而不是说谎。我将其视为开始检查所有我的关于情况的假设的过程,因为我显然是不了解情况的人。意思是“面面相觑”,而不是严肃的观点。

标签: php mysql arrays pdo


【解决方案1】:

准备好语句后,先使用bind_param,然后继续。

【讨论】:

  • foreach($new_items as $key => $value) { $stmt = $dbh->prepare("INSERT INTO products (name, weight, price) VALUES (:name, :weight, :价钱)”); $stmt->bindParam(':name', $value['name']); $stmt->bindParam(':weight', $value['weight']); $stmt->bindParam(':price', $value['Price']); $stmt->执行(); .....不工作???
【解决方案2】:

$stmt = $conn->prepare($sql);之后添加这段代码:

 $stmt -> bind_param("ssd", $name, $weight,$price);

【讨论】:

    【解决方案3】:

    对于目前的数据结构,你的代码是可以的。

    这个错误表明你的数组有一些不同的结构,至少那个数组还有一层嵌套

    检查您的输入数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      • 2020-11-07
      相关资源
      最近更新 更多