2017-06-03 111 views
-2

即时通讯新的PHP和SQL语言,我有一个问题。 我想在循环时将我的数据插入数据库。到目前为止,我的代码就是这样。在循环中插入数据到mysql数据库

for ($x = 0; $x <= 10; $x++) { 
$sql="INSERT INTO exec (time, value) VALUES (now(), '34')"; 
} 

但是,当我执行此代码时,数据只会插入数据库一次,而不是我想要的10次。我也想在每个循环之间增加一些延迟约10秒。任何帮助,将不胜感激!

+0

你实际上没有查询任何东西,你只是在循环中建立字符串。你为什么要延迟? – Qirel

+0

如果您想重复使用该语句,则应始终使用prepare。只是创建一个字符串不会执行查询。 –

+0

啊。我看到了我的错误。我想要延迟,所以无论何时将数据插入到数据库中,时间都会不同。谢谢 – dean

回答

0

您需要将数据库与实际插入的连接。

$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); 
} 
+1

在循环之前放置'$ stmt = $ dbh-> prepare(“INSERT INTO exec(time,value)VALUES(now(),34)”);'。 –

+1

@MarkusZeller非常感谢! –

+0

这个工程!感谢你们两位! :) – dean

0

您没有运行查询,您只是将一个变量设置为一个字符串。因此,当循环结束时,字符串的最后一个查询就是一行,它将执行该查询。

使用string concatenation$sql .= "INSERT ...;"; 记得要添加一个;到你的sql语句的最后,以允许同时进行多个查询。

作为替代人们也可以用一个INSERT语句插入多值象例如:

INSERT INTO `table_name` 
    (`field1`, `field2`) 
VALUES 
    (1, 2), 
    (3, 4), 
    ...;