2013-04-29 97 views
1

我嘗試使用mysqli爲了在我的數據庫中插入數據。但不起作用。哪裏可能是錯誤?在MySQL中使用mysqli插入數據問題

$myDb = new mysqli($hostname, $username, $password, $database); 

if($myDb->connect_errno > 0){ 
    die('Unable to connect to database [' . $myDb->connect_error . ']'); 
} 

$statment = $myDb->prepare("INSERT INTO user(name,surname,age) 
VALUES (?,?,?)"); 
    $statement->bind_param('s', $_POST['name']); 
    $statement->bind_param('s', $_POST['surname']); 
    $statement->bind_param('i', 25); 


    $statement->execute(); 

    $statement->free_result(); 

編輯:

我得到這個錯誤:

Binding parameters failed: (0) Execute failed: (2031) No data supplied for parameters in prepared statement 
+0

'mysqli_error()'告訴你什麼? – 2013-04-29 12:12:55

+0

你會得到什麼錯誤? – Borniet 2013-04-29 12:13:00

+0

綁定參數失敗:(0)執行失敗:(2031)沒有爲準備好的語句中的參數提供數據 – GVillani82 2013-04-29 18:13:52

回答

0

我使用參數的正確綁定解決了這個問題。在這裏,正確的代碼:

$myDb = new mysqli($hostname, $username, $password, $database); 

if($myDb->connect_errno > 0){ 
    die('Unable to connect to database [' . $myDb->connect_error . ']'); 
} 

$statment = $myDb->prepare("INSERT INTO user(name,surname,age) 
VALUES (?,?,?)"); 
    $statement->bind_param('s', $name); 
    $statement->bind_param('s', $surname); 
    $statement->bind_param('i', $age); 

$name = $_POST['name']; 
$surname = $_POST['surname']; 
$age = 25; 


    $statement->execute(); 

    $statement->free_result(); 
2

你已經得到了錯誤的位置:

$陳述書> bind_param( '我',25);

25不是一個變量。綁定參數時只能使用變量。綁定時不能使用常量,也不能使用固定的字符串或數字。

此外,它綁定時從來沒有爲我拆分參數。我有一個錯誤。我需要這樣做:

$myDb = new mysqli($hostname, $username, $password, $database); 

if($myDb->connect_errno > 0){ 
    die('Unable to connect to database [' . $myDb->connect_error . ']'); 
} 

$statement = $myDb->prepare("INSERT INTO user (name,surname,age) VALUES (?,?,25)"); 
$statement->bind_param('ss', $_POST['name'], $_POST['surname']); 

$statement->execute(); 

$statement->free_result(); 
$statement->close();