即时通讯新的PHP和SQL语言,我有一个问题。 我想在循环时将我的数据插入数据库。到目前为止,我的代码就是这样。在循环中插入数据到mysql数据库
for ($x = 0; $x <= 10; $x++) {
$sql="INSERT INTO exec (time, value) VALUES (now(), '34')";
}
但是,当我执行此代码时,数据只会插入数据库一次,而不是我想要的10次。我也想在每个循环之间增加一些延迟约10秒。任何帮助,将不胜感激!
即时通讯新的PHP和SQL语言,我有一个问题。 我想在循环时将我的数据插入数据库。到目前为止,我的代码就是这样。在循环中插入数据到mysql数据库
for ($x = 0; $x <= 10; $x++) {
$sql="INSERT INTO exec (time, value) VALUES (now(), '34')";
}
但是,当我执行此代码时,数据只会插入数据库一次,而不是我想要的10次。我也想在每个循环之间增加一些延迟约10秒。任何帮助,将不胜感激!
您需要将数据库与实际插入的连接。
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$stmt = $dbh->prepare("INSERT INTO exec (time, value) VALUES (now(), 34)");
for ($x = 0; $x <= 10; $x++) {
$stmt->execute();
sleep(1);
}
在循环之前放置'$ stmt = $ dbh-> prepare(“INSERT INTO exec(time,value)VALUES(now(),34)”);'。 –
@MarkusZeller非常感谢! –
这个工程!感谢你们两位! :) – dean
您没有运行查询,您只是将一个变量设置为一个字符串。因此,当循环结束时,字符串的最后一个查询就是一行,它将执行该查询。
使用string concatenation像$sql .= "INSERT ...;";
记得要添加一个;到你的sql语句的最后,以允许同时进行多个查询。
作为替代人们也可以用一个INSERT语句插入多值象例如:
INSERT INTO `table_name`
(`field1`, `field2`)
VALUES
(1, 2),
(3, 4),
...;
你实际上没有查询任何东西,你只是在循环中建立字符串。你为什么要延迟? – Qirel
如果您想重复使用该语句,则应始终使用prepare。只是创建一个字符串不会执行查询。 –
啊。我看到了我的错误。我想要延迟,所以无论何时将数据插入到数据库中,时间都会不同。谢谢 – dean