gpt4 book ai didi

php - 选择插入不工作

转载 作者:行者123 更新时间:2023-11-30 00:08:42 25 4
gpt4 key购买 nike

我正在尝试将多个 id 插入到新表中。 id 列表取自另一个表。

我的代码:

     $stmt = $con->prepare('DROP TABLE tblname;
CREATE TABLE tblname (
id BIGINT
);

INSERT INTO tblname (id)
SELECT tablename2.colname
FROM tablename2
WHERE (col1 = "value" AND col2 = "value")');

$stmt->execute();

我创建并转储该表,因为它是更新脚本的一部分。

(有没有比转储/创建更好的方法?)

该脚本需要当前的 id 列表,我正在尝试使用这些 id 创建一个表。发生的情况是,每当我运行代码(使用 putty)时,它都会返回“0”并且表保持为空。

我做错了什么?

也欢迎任何有关 php/mysql 的一般帮助/建议!

最佳答案

首先,确保 PDO 设置为在查询失败时抛出异常:

$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

然后,也许捕获异常(或让异常停止应用程序)并看看出了什么问题。
我确实相信您的插入查询是,呃,关闭:

INSERT INTO tblname (id)
SELECT tblname2.colname
FROM tablename2
WHERE col1 = "val"

只是看起来模棱两可,而且很困惑,甚至更多:看起来不安全。但是,尝试这个同样困惑的查询:

INSERT INTO tblname (id) VALUES (
SELECT colname
FROM tblname2
WHERE col1 = "val"
);

最后但并非最不重要的一点是,请确保您运行的是 PHP 版本 5.3+,因为在该版本之前,PDO 不支持多个查询。

不过,我的建议是不要对 INSERT 查询使用多个查询。相反,我会使用事务并将选择和插入查询分开。我还会向 DROP TABLECREATE TABLE 查询添加安全网:

try
{
$con->beginTransaction();//DROP & CREATE:
if ($con->exec('DROP TABLE IF EXISTS tblname') === false)
{//query wasn't executed
$con->rollback();
exit($con->errInfo());//error
}
if ($con->exec('CREATE TABLE IF NOT EXISTS tblname(...);') === false)
{
$con->rollback();
exit($con->errInfo());
}
$con->commit();//alter tables.
$con->beginTransaction();//INSERT TRANSACTION
$stmt = $con->prepare('INSERT INTO tblname (id) VALUES (:id)');
$bind = array(
':id' => null
);
$select = $con->prepare(
'SELECT colname FROM tblname2 WHERE col1 = :val1 AND col2 = :val2'
);
$select->execute(
array(
':val1' => 'value1',
':val2' => 'value2'
)
);
while ($row = $select->fetch(PDO::FETCH_ASSOC))
{
$bind[':id'] = $row['colname'];
$stmt->execute($bind);//inserts row
$stmt->closeCursor();//optional
}
$con->commit();//save changes to db
}
catch (PDOException $e)
{
//rollback transaction
$con->rollback();
exit($e->getMessage());//show what went wrong, and exit.
}

关于php - 选择插入不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24282238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com