2015-07-04 20 views
2

我工作的一個項目,使用PHP - mysqli的,我一直在使用HTML表單成功地插入值到我的表,現在我想更新值。 在我的更新頁面中,所有的值都被回顯出來,一旦我點擊提交按鈕,它就會保持不變並在同一頁面中。我的表中的數據沒有更新,因爲它必須是

It says, Fatal error: Call to a member function bind_param() on a non-object in line no ...

任何意見,在那裏,什麼類型的錯誤,在我下面的代碼: DB_USER>表:用戶域:(USER_ID,FNAME,laname,UNAME,PWORD,電子郵件,手機,地址,RDATE )。 user_update.php

<?php ini_set('display_errors', 1); 
require 'dbcox/conf.php'; 
require 'function/security.php'; 
?> 
<?php 
$user_id = $_GET['user_id']; 
if(isset($_GET['user_id'])){ 
    $update = $db->prepare("UPDATE users SET (fname=?, lname=?, uname=?, pword=?, email=?, mobile=?, address=?, WHERE user_id=? "); 
    $update->bind_param('sssssss', $fname, $lname, $uname, $pword, $email, $mobile, $address); 
    $fname = $_POST['fname']; 
    $lname = $_POST['lname']; 
    $uname = $_POST['uname']; 
    $pword = $_POST['pword']; 
    $email = $_POST['email']; 
    $mobile = $_POST['mobile']; 
    $address = $_POST['address']; 
    if($update->execute()){ 
     echo 'Successfully updated'; 
    }else{ 
     'Failed to update!!'; 
    } 
} 
+0

你確定你有一個成功的連接 –

+0

你忘了綁定'user_id'! – Saty

+0

宇智波,是的,我做的,coze,它顯示了所有表中的值的形式.... –

回答

1

您沒有提供USER_ID到bind_param

<?php ini_set('display_errors', 1); 
require 'dbcox/conf.php'; 
require 'function/security.php'; 
?> 
<?php 
$user_id = $_GET['user_id']; 
if(isset($_GET['user_id'])){ 
$update = $db->prepare("UPDATE users SET fname=?, lname=?, uname=?, pword=?, email=?, mobile=?, address=? WHERE user_id=? "); 
$update->bind_param('ssssssss', $fname, $lname, $uname, $pword, $email, $mobile, $address, $user_id); 
$fname = $_POST['fname']; 
$lname = $_POST['lname']; 
$uname = $_POST['uname']; 
$pword = $_POST['pword']; 
$email = $_POST['email']; 
$mobile = $_POST['mobile']; 
$address = $_POST['address']; 
if($update->execute()){ 
echo 'Successfully updated'; 
}else{ 
'Failed to update!!'; 
} 
} 
+0

謝謝你這麼多男人,你幫助並解決了我的問題,這是我的錯誤,我忘記了......,你從我的頭痛中解救了我 –

+0

@Sun_saurya隨時:)你能把這個標記爲正確答案嗎? –

1

你的SQL語法有錯誤,如果你這樣做的時候echo $db->error;回報$db->prepare()false會發現。您在分配清單之前有額外的(,並且在最後一次分配之後還有額外的,。它應該是:

$update = $db->prepare("UPDATE users SET fname=?, lname=?, uname=?, pword=?, email=?, mobile=?, address=? WHERE user_id=? "); 

你也忘了綁定user_id param。

$update->bind_param('ssssssss', $fname, $lname, $uname, $pword, $email, $mobile, $address, $user_id); 
0
<?php ini_set('display_errors', 1); 
require 'dbcox/conf.php'; 
require 'function/security.php'; 
?> 
<?php 
$user_id = $_GET['user_id']; 
if(isset($_GET['user_id'])){ 
    $update = $db->prepare("UPDATE users SET (fname=?, lname=?, uname=?, pword=?, email=?, mobile=?, address=? WHERE user_id=? "); 
    $update->bind_param('ssssssss', $fname, $lname, $uname, $pword, $email, $mobile, $address, $user_id); 
    $fname = $_POST['fname']; 
    $lname = $_POST['lname']; 
    $uname = $_POST['uname']; 
    $pword = $_POST['pword']; 
    $email = $_POST['email']; 
    $mobile = $_POST['mobile']; 
    $address = $_POST['address']; 
    $update->execute() 
    if($update->errno()){ 
    echo "FAILURE!!! " . $update->error; 
    } 
    else 
     echo "Updated {$update->affected_rows} rows"; 

    $update->close(); 
} 
相關問題