2017-06-03 141 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), 
    ...;