2012-06-04 63 views
-1

這裏是我的SQL語句:我的PDO插入語句有什麼問題?

protected static $_SQLInsert = "INSERT INTO location 
(host_id, street, suburb, region, post_code, country, phone, email, 
timezone, longitude, latitude, is_main) 
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; 

我準備的聲明如下:

static::$_PDOSInsert = self::$_PDO->prepare(static::$_SQLInsert); 

準備與12個值的數組後,我執行的語句:

static::$_PDOSInsert->execute($array); 

我然後得到以下警告:

PDOStatement對象::執行():SQLSTATE [HY093]:無效的參數號:參數是不...

那麼,我究竟做錯了定義???

編輯:這裏的數組:

(
    [host_id] => 15 
    [street] => Street 15 
    [suburb] => Suburb 15 
    [region] => Region 15 
    [post_code] => Post Code 15 
    [country] => AU 
    [phone] => 12341234 
    [email] => [email protected] 
    [timezone] => 1 
    [longitude] => 123 
    [latitude] => 234 
    [is_main] => 1 
) 

謝謝!

+1

可能重複[「無效參數編號:參數未定義」插入Yii數據] stackoverflow.com/questions/5874383/invalid-parameter-number-parameter-was-not-defined-inserting-data-in-yii) – mario

+1

'參數未定義',也許你忘了在數組中定義一個參數?我會使用關聯佔位符作爲':host_id'而不是幾十個'''來更好地跟蹤你的參數。 –

+0

@mario:我沒有使用命名參數 –

回答

2

pdo對於你給execute()的數組真的很挑剔。如果您使用了未命名的佔位符(如?),它需要一個數字索引的數組,並且它必須從索引0開始。

+0

謝謝克里斯,這是一個重要的學習! –