我認爲(標題)是我遇到的問題。我建立了一個MySQL連接,我讀了一個XML文件,然後通過遍歷元素將這些值插入表中。問題是,不是隻插入1條記錄,有時我插入2或3或4.這似乎取決於我讀過的以前的值。我想我正在重新初始化變量,但我想我錯過了一些東西 - 希望有一些簡單的東西。如何防止PHP變量成爲數組或對象?
這是我的代碼。我原本有20列,但我縮短了包含的版本,使其更易於閱讀。
$ctr = 0;
$sql = "insert into csd (id,type,nickname,hostname,username,password) ".
"values (?,?,?,?,?,?)";
$cur = $db->prepare($sql);
for ($ctr = 0; $ctr < $expected_count; $ctr++) {
unset($bind_vars,$dat);
$lbl = "csd_{$ctr}";
$dat['type'] = (string) $ref->itm->csds->$lbl->type;
$dat['nickname'] = (string) $ref->itm->csds->$lbl->nickname;
$dat['hostname'] = (string) $ref->itm->csds->$lbl->hostname;
$dat['username'] = (string) $ref->itm->csds->$lbl->username;
$dat['password'] = (string) $ref->itm->csds->$lbl->password;
$bind_vars = array($id,$dat['$type'], $dat['$nickname'], $dat['$hostname'],
$dat['$username'], $dat['$password']);
print_r ($bind_vars);
$res = $db->execute($cur, $bind_vars);
}
P.S.我還爲這個SimpleXML添加了標籤,因爲這就是我正在閱讀該文件的方式,儘管上面沒有包含該代碼。它看起來像這樣:
$ref = simplexml_load_file($file);
更新:我身邊改變了代碼按照建議,現在它並不總是相同的模式,但同樣打破了。當我在插入之前顯示綁定數組時,它看起來像這樣。請注意,我前後也算行,所以有0行,然後我插入1,則有2個:
0 CSDs on that ITEM now.
Array
(
[0] => 2
[1] => 0
[2] =>
[3] => X
[4] => XYZ
[5] =>
[6] =>
[7] =>
[8] => audio
[9] =>
[10] => 192.168.0.50
[11] => 192.168.0.3
[12] => 255.255.255.0
[13] => 255.255.255.0
[14] =>
[15] =>
[16] =>
[17] => 21
[18] => 5
[19] => Y
[20] => /dir
)
2 CSDs on that ITEM now.
什麼是輸出應該是&錯誤在哪裏? – apis17 2010-06-02 13:16:39
執行'print_r($ bind_vars)'並檢查數組是否正確。 – 2010-06-02 13:16:56
我最初的想法是,如果我可以將這些變量聲明爲INTEGERS和STRINGS,那麼我就不會將它們自動成爲數組的問題,只是因爲我向它們添加了另一個值。但是,我可能會錯過一些東西。 – MJB 2010-06-02 13:17:18