无法让我的mysql_query()在我的PHP脚本中工作

时间:2013-04-03 05:20:44

标签: php mysql lamp

我在我的LAMP服务器上通过php运行我的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中并且它按原样运行,尽管它确实返回了每个insert语句的2个警告。 第一个值是autoincrement id值,第二个值是时间戳。

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

你们可以帮我解决问题吗?我一直是潜伏者,这个网站在过去帮助了我很多。

4 个答案:

答案 0 :(得分:1)

mysql_query()不允许您一次执行多个查询。如果您更喜欢使用已弃用的mysql_*扩展名

,则必须逐个执行所有这些操作

请参阅PHP Manual

中的此说明

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.

答案 1 :(得分:1)

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

mysql_*不允许运行multi query

答案 2 :(得分: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/

答案 3 :(得分:0)

关于您收到的错误的后续问题:这些问题可能是由于您在查询中使用idtimestamp所假设的空字符串造成的。

您希望在INSERT查询中包含要插入的行,并让其他值(例如auto_increment ing id s)填充自己。

例如,假设您的表格包含以下行:idtimeval1val2val3。您当前的陈述就像执行:

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')

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