【发布时间】:2017-06-11 04:29:49
【问题描述】:
据我所知,我从表中选择了 6 列,并绑定了 6 个变量,为什么它告诉我它不匹配?
这是一个评分脚本,人们可以在其中投票给汽车。
此脚本适用于插入/选择/联合,但我注意到当人们从文件夹结构中对图像进行投票时,一切都变得非常缓慢,因此我想将选定的图像移动到另一个文件夹,以便更快地访问它们,但是我在尝试绑定结果时似乎遇到了问题。这对我来说通常不是问题。
有人可以向我解释为什么在这种特殊情况下会发生这种情况吗?
更新:
我忘了包含类别变量 抱歉,它们是在刚刚定义的脚本中的真实脚本中......那么为什么所有的反对票?我告诉过你 SQL 的工作原理——我只是想改进它。
$cat1 = 1;
$cat2 = 2:
$cat3 = 3;
$stmt = $dbCon->prepare(" INSERT INTO cars_daily ( cars_daily_identifier, cars_daily_source, cars_daily_views, cars_daily_votes, cars_daily_rating, cars_daily_category) "
. " (SELECT cars_car_id, cars_car_source, cars_car_views, cars_car_votes, cars_car_rating, cars_car_category "
. " FROM cars_bcar "
. " WHERE cars_car_category IN (?) ORDER BY RAND() LIMIT 5) "
. " UNION "
. " (SELECT cars_car_id, cars_car_source, cars_car_views, cars_car_votes, cars_car_rating, cars_car_category "
. " FROM cars_car "
. " WHERE cars_car_category IN (?) ORDER BY RAND() LIMIT 5) "
. " UNION "
. " (SELECT cars_car_id, cars_car_source, cars_car_views, cars_car_votes, cars_car_rating, cars_car_category "
. " FROM cars_car "
. " WHERE cars_car_category IN (?) ORDER BY RAND() LIMIT 5) ");
$stmt->bind_param('iii', $cat1, $cat2, $cat3);
if ($stmt->execute()) {
echo "<br><br>";
echo "Success SELECT/INSERT";
echo "<br><br>";
} else {
echo "<br><br>";
print_r($stmt->error);
echo "<br><br>";
echo "Fail SELECT/INSERT";
}
$stmt->bind_result($cars_car_id, $cars_cars_source, $cars_car_views, $cars_car_votes, $cars_car_rating, $cars_car_category);
while ($stmt->fetch()) {
copy("models/$cars_cars_source", "daily/$cars_cars_source");
}
【问题讨论】:
-
你有没有试过在 mysql 中运行这样的语句(例如使用 phpMyAdmin 或类似的工具)?如果是,返回了什么?
-
每个值都需要一个占位符。
$cat1, $cat2, $cat3是单个值吗? -
您还期望获取/绑定(_result)什么?
-
为什么所有的反对票?是的,这个 sql 有效......它只是 fetch 没有,我不值得所有这些downvotes
-
我有所有的 $cat 变量,我只是忘记在这个例子中包含它们,抱歉它们是在脚本中定义的。但是感谢这么多的反对票,我告诉你 sql 有效,我只是试图改进它并从选择查询中获取结果......
标签: php mysql mysqli prepared-statement