2012-10-22 48 views
0

有人可以告訴我這行代碼有什麼問題嗎?我目前是新的,現在嘗試使用mysqli prepared語句來連接數據庫後端。 到目前爲止,我似乎無法得到它來更新數據庫。使用mysqli插入多個值

$stmt = $mysqli->prepare("INSERT INTO canada VALUES (?,?,?,?,?,?)"); 
    $stmt->bind_param('sssiss',$_REQUEST["UserID"],$_REQUEST["FirstName"], 
         $_REQUEST["LastName"],$_REQUEST["Age"],$_REQUEST["WhatParty"], 
         $_REQUEST["Electorate"]); 

    $stmt->execute(); 
+0

嘗試PDO它比mysqli好 –

+0

PDO是mysqli的數據庫抽象類,並不比mysqli好,它只是提供了更多的工具。 –

回答

1

的問題是第一個參數綁定PARAM它specifys有型的兩個字段整數不正確。

Bind parameters

如果用戶ID和年齡類型爲int,其餘的都是字符串類型,然後 應該 我爲整數,S代表字符串

- 更新

$db = new mysqli($server_host, $server_user, $server_password, $server_db); 

if (mysqli_connect_errno()) { 
    printf("DB error: %s", mysqli_connect_error()); 
    exit(); 
} 



$stmt = $db->prepare("INSERT INTO canada 
         userid,firstname,lastname,age,whatparty,electorate) 
         VALUES (?,?,?,?,?,?))"); 

$stmt->bind_param("ississ",$_REQUEST["UserID"],$_REQUEST["FirstName"], 
        $_REQUEST["LastName"],$_REQUEST["Age"], 
        $_REQUEST["WhatParty"],$_REQUEST["Electorate"]); 


$stmt->execute(); 
+0

我在更新之前更正了我的示例。但它仍然不起作用。 – yoshifish

+0

您還需要確保每個變量都存在於當前範圍中(您在此實例中使用超全局變量,因此您可以)但還要確保設置了所有'$ _REQUEST'參數 –

1

的問題是,有6 (?,?,?,?,?,?)你7參數bind_param

嘗試

$stmt = $mysqli->prepare("INSERT INTO canada VALUES (?,?,?,?,?,?,?)"); 
+0

第一個參數表示參數類型列表。在這種情況下,「sssiss」表示字符串字符串字符串整數字符串和字符串。 –

+0

現在得到一個錯誤:致命錯誤:調用第12行的/Applications/XAMPP/xamppfiles/htdocs/officialWebTestSafer/insertSafer.php中的非對象的成員函數prepare() – yoshifish

+0

是否因爲數據庫使用varchar我不能使用字符串? – yoshifish