1

我无法让我的 php 脚本通过我的 LAMP 服务器中的 php 运行。这是我遇到问题的代码。

# Insert Statement
$insert     ="INSERT INTO ACRC VALUES('','','1C3-4A','$fs','$acrc1c3_4afs');
INSERT INTO ACRC VALUES('','','1C3-4A','$fi','$acrc1c3_4afi');
INSERT INTO ACRC VALUES('','','1C3-4A','$fo','$acrc1c3_4afo');
INSERT INTO ACRC VALUES('','','1C3-4B','$fs','$acrc1c3_4bfs');
INSERT INTO ACRC VALUES('','','1C3-4B','$fi','$acrc1c3_4bfi');
INSERT INTO ACRC VALUES('','','1C3-4B','$fo','$acrc1c3_4bfo');
INSERT INTO ACRC VALUES('','','1C3-12A','$fs','$acrc1c3_12afs');
INSERT INTO ACRC VALUES('','','1C3-12A','$fi','$acrc1c3_12afi');
INSERT INTO ACRC VALUES('','','1C3-12A','$fo','$acrc1c3_12afo');
INSERT INTO ACRC VALUES('','','1C3-12B','$fs','$acrc1c3_12bfs');
INSERT INTO ACRC VALUES('','','1C3-12B','$fi','$acrc1c3_12bfi');
INSERT INTO ACRC VALUES('','','1C3-12B','$fo','$acrc1c3_12bfo');";
echo "$insert";
mysql_query($insert) or die(mysql_error());
echo "$insert";
?>

运行此命令将返回以下结果。

[root@enseva html]# php snmp.php
ACRC Unit 1C3-4A : Fan Speed 73.3 % : Fluid In Temperature 47.2 F : Fluid Out Temperature 55 F
ACRC Unit 1C3-4B : Fan Speed 74 % : Fluid In Temperature 47.8 F : Fluid Out Temperature 53.5 F
ACRC Unit 1C3-12A : Fan Speed 28.9 % : Fluid In Temperature 44.7 F : Fluid Out Temperature 46.4 F
ACRC Unit 1C3-12B : Fan Speed 28.5 % : Fluid In Temperature 47.1 F : Fluid Out Temperature 62.9 F
INSERT INTO ACRC VALUES('','','1C3-4A','Fan Speed','73.3');
INSERT INTO ACRC VALUES('','','1C3-4A','Fluid Temperature In','47.2');
INSERT INTO ACRC VALUES('','','1C3-4A','Fluid Temperature Out','55');
INSERT INTO ACRC VALUES('','','1C3-4B','Fan Speed','74');
INSERT INTO ACRC VALUES('','','1C3-4B','Fluid Temperature In','47.8');
INSERT INTO ACRC VALUES('','','1C3-4B','Fluid Temperature Out','53.5');
INSERT INTO ACRC VALUES('','','1C3-12A','Fan Speed','28.9');
INSERT INTO ACRC VALUES('','','1C3-12A','Fluid Temperature In','44.7');
INSERT INTO ACRC VALUES('','','1C3-12A','Fluid Temperature Out','46.4');
INSERT INTO ACRC VALUES('','','1C3-12B','Fan Speed','28.5');
INSERT INTO ACRC VALUES('','','1C3-12B','Fluid Temperature In','47.1');
INSERT INTO ACRC VALUES('','','1C3-12B','Fluid Temperature Out','62.9');You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO ACRC VALUES('','','1C3-4A','Fluid Temperature In','47.2');INSERT IN' at line 2

现在我已经从中获取结果并手动将其放入我的 mysql 中,它按原样工作,尽管它确实在每个插入语句中返回了 2 个警告。第一个值是自动增量 id 值,第二个是时间戳。

对于后续问题,我的时间戳返回全 0。

你们能帮忙解答我的问题吗?我已经潜伏了很长时间,这个网站在过去帮助了我很多。

4

4 回答 4

1

mysql_query()不允许您一次执行多个查询。mysql_*如果您更喜欢使用已弃用的扩展程序,则必须一一执行所有这些

请参阅PHP 手册中的此注释

mysql_query() sends a unique query (multiple queries are not supported) to the currently active database on the server that's associated with the specified link_identifier.

那个著名的红盒子也会说

This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used.

于 2013-04-03T05:24:52.960 回答
1

使用Mysqli's multi_query函数运行多查询。

mysql_*不允许运行multi query

于 2013-04-03T05:26:07.777 回答
1

您不能像这样发送“INSERT INTO”。但您可以执行以下操作:

$insert = "INSERT INTO ACRC VALUES 
('','','1C3-4A','$fs','$acrc1c3_4afs'),
('','','1C3-4A','$fi','$acrc1c3_4afi'),
('','','1C3-4A','$fo','$acrc1c3_4afo'),
('','','1C3-4B','$fs','$acrc1c3_4bfs'),
('','','1C3-4B','$fi','$acrc1c3_4bfi'),
('','','1C3-4B','$fo','$acrc1c3_4bfo'),
('','','1C3-12A','$fs','$acrc1c3_12afs'),
('','','1C3-12A','$fi','$acrc1c3_12afi'),
('','','1C3-12A','$fo','$acrc1c3_12afo'),
('','','1C3-12B','$fs','$acrc1c3_12bfs'),
('','','1C3-12B','$fi','$acrc1c3_12bfi'),
('','','1C3-12B','$fo','$acrc1c3_12bfo');";

作为参考:http ://www.electrictoolbox.com/mysql-insert-multiple-records/

于 2013-04-03T05:29:51.953 回答
0

对于您的后续问题,关于您收到的错误:这些可能是由于您在查询中使用空字符串导致idtimestamp

您希望在 INSERT 查询中包含要插入的行,并让其他值(如auto_incrementing ids)自行填写。

例如,假设您的表有以下行:id, time, val1, val2, val3。您当前的语句就像执行:

INSERT INTO ACRC (id, time, val1, val2, val3) VALUES('','','1C3-4A','$fi','$acrc1c3_4afi');

所以 MySQL 试图在 id 和 time 中插入空字符串,然后只插入该行的“空”(因此,对于整数,它是 0)。当您有应该是唯一的行时,这往往会导致问题 -auto_increment如果您不尝试将某些内容插入id列中,则会为您做到这一点。

相反,使用:

INSERT INTO ACRC (val1, val2, val3) VALUES ('1C3-4A', '$fi', '$acrc1c3_4afi')

并省略其他行以允许它们自己填写。

于 2013-04-03T05:37:04.723 回答