Php 将数据从一个mysql表插入到另一个mysql表(注意:数组到字符串的转换)
我试图从数据库中的表Php 将数据从一个mysql表插入到另一个mysql表(注意:数组到字符串的转换),php,mysql,pdo,Php,Mysql,Pdo,我试图从数据库中的表tickets中获取数据htmlCode,然后尝试将其插入另一个表users 下面是我编写的流动代码,它给了我一个错误通知:数组到字符串的转换 我有一点关于我的愚蠢的想法,我试图将数组插入数据库,它应该是一个字符串,那么有没有更简单的方法将数据从一个表传输到另一个表,或者对我的流动代码进行任何更正 <?php try{ $conn = new PDO("mysql:host=localhost;dbname=mydb",
tickets
中获取数据htmlCode
,然后尝试将其插入另一个表users
下面是我编写的流动代码,它给了我一个错误通知:数组到字符串的转换
我有一点关于我的愚蠢的想法,我试图将数组插入数据库,它应该是一个字符串,那么有没有更简单的方法将数据从一个表传输到另一个表,或者对我的流动代码进行任何更正
<?php
try{
$conn = new PDO("mysql:host=localhost;dbname=mydb", "dbuser", "mypass");
}
catch(PDOException $pe)
{
die('Connection error, because: ' .$pe->getMessage());
}
$sql = "SELECT `htmlCode` FROM `tickets`";
$stmt = $conn->query($sql);
if(!$stmt)
{
die("Execute query error, because: ". $conn->errorInfo());
}
$row = $stmt->fetch(PDO::FETCH_ASSOC);
// print_r ($row); //prints an array
$sql = "INSERT INTO users (row) VALUES (:tickets)";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':tickets' , $row);
$stmt->execute();
?>
您正在将关联数组提取到数据库中。您只需从该数组中获取正确的值,并将其绑定:
$stmt->bindParam(':tickets' , $row['htmlCode']);
bindParam
要求第二个参数是字符串,但$row
是数组。您甚至使用了PDO::FETCH_ASSOC
,意思是“关联数组”
不过,修复起来相当简单:
$stmt->bindParam(':tickets' , $row['htmlCode']);
fetch_assoc()在PHP中返回一个关联数组,这就是为什么会得到一个数组
解决方案是这样做:
$stmt->bindParam(':tickets' , $row['htmlCode']);
您可以通过单个查询完成此操作:
INSERT INTO users (row)
SELECT htmlCode FROM tickets
LIMIT 1 /* since your original script doesn't loop, it only copies one row */
$conn->errorInfo()
返回数组,而不是字符串,因此无法直接打印。尝试:
die("Execute query error, because: ". implode(' ', $conn->errorInfo()));
您的
用户
表中确实有一列名为行
?我觉得你的剧本比我们在答案中发现的错误要多得多。不。。。。users表还有一个名为tickets的列。。。首先,我尝试从tickets
表中获取数据,然后尝试将其插入到users表中,该表中还有一列名为tickets。如果您是指(tickets)
,为什么要编写(row)
?您知道,INSERT
用于创建新行,而不是更新现有行,是吗?哦。。我已将(行)与(票证)不匹配,首先应将其插入用户(票证)值(:行)。。非常感谢你。。。使用UPDATE
而不是INSERT
解决了整个问题:)您也可以使用加入更新来直接复制数据,而不是两个查询。这会删除错误,但不会插入数据…..它会给出执行查询错误,因为:Array。。。现在怎么办?更新答案以显示如何正确显示错误。