2015-05-07 89 views
0

我是PHP新手,我需要一些幫助。我創建了一個名爲Home.php的表單,它接受ID,名稱&將文件上載作爲輸入,並將其添加到mysql中。它的添加成功。我想執行更新操作,以便用戶想要更新任何字段。所以我想要的是它必須在db中更新這3個字段。 但是我在Process.php中收到以下錯誤。使用mysqli的PHP更新表格

錯誤:警告:mysqli_stmt :: bind_param():變量數不準備語句相匹配的參數個數

這裏是我的代碼的相關部分:

$sql = "UPDATE info SET id=?, name=?, upload=? WHERE id=?"; 
if(!($stmt = $mysqli->prepare($sql))) 
{ 
    die("Unable to prepare statement"); 
} 
else 
{ 
    $stmt->bind_param("iss", $id, $name, $upload);  
    if($stmt->execute()) 
    { 
    echo "Successfully updated"; 
    } 
    else 
    { 
    die("Update failed"); 
    } 
} 

回答

3

你有4個參數需要

$sql = "UPDATE info SET id=?, name=?, upload=? WHERE id=?"; 

即使id應該是相同的,因爲你沒有給它的名字,你必須添加它2 ti在你的綁定

$stmt->bind_param("issi", $id, $name, $upload, $id); 

MES應該工作

您應該檢查有關的語句添加一個名爲PARAMS,以避免它。

0

這個錯誤是由於

$sql = "UPDATE info SET id=?, name=?, upload=? WHERE id=?"; 

這裏在此查詢已綁定4參數

但你綁定只有3 PARAM

$stmt->bind_param("iss", $id, $name, $upload); 

這裏應該是

$stmt->bind_param("issi", $id, $name, $upload,$id); 

AS p呃我們的討論您的最終查詢將是

$sql = "UPDATE info name=?, upload=? WHERE id=?"; 
$stmt->bind_param("ssi", $name, $upload,$id); 
+0

我試過這個,現在錯誤消失了,但文件正在上傳到DOC文件夾。它只是顯示成功更新但未更新的消息。 – MAK

+0

@mak錯誤消失了,這意味着這個ans可以正常工作。現在檢查你的更新查詢。嘗試打印您的查詢,並檢查是什麼問題 – Saty

+0

如何使用var_dump來做到這一點? – MAK