【问题标题】:MySQL multi statement in PHPPHP中的MySQL多语句
【发布时间】:2013-06-29 07:19:33
【问题描述】:

发生的情况是我正在使用 google maps api,并且我有一个包含一些商店的数据库,数据库是这些商店的方向,使用 javascript 获取商店和用户位置之间的距离,主题我想按接近度排序,我所做的是第一页计算全部然后重定向以下格式"pagina.php?data=(ID, DISTANCE),(ID, DISTANCE), ..... "

然后获取参数

<?php $data = $ _GET['data'] ?>   // and example of "data" -> "(1,1582),(2,3568)," end with comma

我正在尝试使用此命令“”在 phpMYAdmin 中有效“”

CREATE TEMPORARY TABLE distancias_temporales (id int(50) NOT NULL, distancia DECIMAL(12,2) NOT NULL DEFAULT 0.00);

INSERT INTO distancias_temporales (id, distancia) VALUES (1, 14.25), (2, 13.34);

SELECT * FROM talleres,distancias_temporales WHERE distancias_temporales.id = talleres.ID ORDER BY distancia ASC;

当然要做动态改变数值​​:

$ data = "(-1, -1)";
if (isset ($ _GET ['data'])) {
    $ data = $ _GET ['data']. "(-1, -1)";
}

在第二行:

 "INSERT INTO d (id, distancia) VALUES ".$data.";";

但是 mysql 发送给我一个错误 根据他告诉我的页面,代码是按我的意愿发送的

但是当我尝试放在页面上时它不起作用......

任何人都可以帮助我,我认为问题是多查询

【问题讨论】:

  • 您使用什么 mysql 扩展来提交查询? mysql和PDO不支持多查询,只有mysqli支持。
  • 请贴出mysql发送的错误信息。还有,$_GET['data']."(-1,-1)" 赋值后的$data的值是多少?
  • P.S.不要在您的 PHP 中的 $ 之后放置空格。这是允许的,但没有人那样写,所以很难阅读。 $ 是变量名的一部分。

标签: php mysql sql phpmyadmin temp-tables


【解决方案1】:

MySQL 可以处理多个插入语句。 Barmar 提出了一个很好的观点,即某些连接管理器不处理该构造。

假设 SQL 未更改发送,则 $data 的分配中似乎缺少逗号。

$ data = $ _GET ['data']. "(-1, -1)";

应该是……

$data = $ _GET['data'] . ", (-1, -1)";

当且仅当值 $_GET['data'] 不为空,例如data="(ID, DISTANCE),(ID, DISTANCE)"。

【讨论】:

  • 我错过了,这没关系,因为数据的结尾是“,”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-22
  • 1970-01-01
  • 2014-01-14
  • 1970-01-01
  • 1970-01-01
  • 2016-10-22
  • 1970-01-01
相关资源
最近更新 更多