gpt4 book ai didi

php - 运行多个 PHP MySQL 查询

转载 作者:可可西里 更新时间:2023-11-01 08:33:38 25 4
gpt4 key购买 nike

我有 9 个 MySQL 查询要在 PHP 中执行,我正尝试像这样执行它们:

 if(mysqli_query($con, $q1)){
?><p>Query 1 complete</p><?
}
if(mysqli_query($con, $q2)){
?><p>Query 2 complete</p><?
}
if(mysqli_query($con, $q3)){
?><p>Query 3 complete</p><?
}
if(mysqli_query($con, $q4)){
?><p>Query 4 complete</p><?
}
if(mysqli_query($con, $q5)){
?><p>Query 5 complete</p><?
}
if(mysqli_query($con, $q6)){
?><p>Query 6 complete</p><?
}
if(mysqli_query($con, $q7)){
?><p>Query 7 complete</p><?
}
if(mysqli_query($con, $q8)){
?><p>Query 8 complete</p><?
}
if(mysqli_query($con, $q9)){
?><p>Query 9 complete</p><?
}

但由于某种原因,只有第一个被执行,并出现在数据库中。其余未完成。执行多个查询时我是否遗漏了什么,或者是否存在我没​​有看到的语法错误?

这里是 $q2,因为它似乎不想超过它:

$q2 = "INSERT INTO outboundapps 
(appid,
fk_outboundappkey,
name,
browser,
fk_urls,
fk_routes,
virtualplatform,
autoanswer,
fk_get)
VALUES ($last + 2,
$last + 2,
$oname,
$otype,
$last + 2,
$last + 2,
$ovirtualplatform,
1,
$last + 2)";

最佳答案

Unknown column 'test' in 'field list'

如果您未能用单引号分隔字符串文字,就会发生这种情况。

以这两条语句为例:

1. INSERT INTO mytable (col1) VALUES (test);

2. INSERT INTO mytable (col1) VALUES ('test');

不同之处在于查询 1 中的 test 被假定为列标识符,而查询 2 中的 test 是字符串文字。

我知道在 VALUES 子句中为新行使用列标识符似乎没有任何意义——如果尚未插入该行,该列怎么可能有任何值?事实上,如果您要命名该表中存在的列,则 INSERT 有效,但新行的列值为 NULL。

INSERT INTO mytable (col1) VALUES (col1); -- no error, but inserts only a NULL

在您的示例查询中,您有:

$q2 = "INSERT INTO outboundapps 
(appid,
fk_outboundappkey,
name,
browser,
fk_urls,
fk_routes,
virtualplatform,
autoanswer,
fk_get)
VALUES ($last + 2,
$last + 2,
$oname,
$otype,
$last + 2,
$last + 2,
$ovirtualplatform,
1,
$last + 2)";

为了帮助调试,您可以echo $q2 并在执行之前查看 SQL 的真实情况。我希望它会是这样的:

INSERT INTO outboundapps 
(appid,
fk_outboundappkey,
name,
browser,
fk_urls,
fk_routes,
virtualplatform,
autoanswer,
fk_get)
VALUES (125,
125,
test,
Firefox,
125,
125,
test,
1,
125)

在该查询中看到没有引号的 test 了吗?这就是为什么它提示您将未知列命名为 test

提示:当您想将应用程序变量传递给查询时,最好使用准备好的语句,因为您不必担心参数周围的引号:

$q2 = "INSERT INTO outboundapps 
(appid,
fk_outboundappkey,
name,
browser,
fk_urls,
fk_routes,
virtualplatform,
autoanswer,
fk_get)
VALUES (?, ?, ?, ?, ?, ?, ?, 1, ?)";

$stmt = mysqli_prepare($q2) or trigger_error(mysqli_error(), E_USER_ERROR);
$stmt->bind_param("iissiisi", $last2, $last2, $oname, $otype, $last2,
$last2, $ovirtualplatform, $last2);
$stmt->execute() or trigger_error($stmt->error, E_USER_ERROR);

关于php - 运行多个 PHP MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19407716/

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