2015-04-25 41 views
0

我用PDO使用下面的方法來更新我的值來表UPDATE到數據庫使用PDO錯誤

形式

<form role="form" method="post" action="submitupdate.php" autocomplete="off"> 
    <input class="update" type="text" name="fullname"></li> 
    <input class="update" type="text" name="dob"></li> 
    <textarea style="width:740px;height:220px;" class="update" type="text" name="intrested"></textarea></li> 
    <textarea style="width:740px;height:220px;" class="update" type="text" name="description"></textarea></li> 
</form> 

處理

<?php 

require('includes/config.php'); 
//if not logged in redirect to login page 
if (!$user->is_logged_in()) { 
    header('Location: login.php'); 
} 
//define page title 
$title = 'Members Page'; 
//include header template 
?> 
<?php 

    try { 

    $username = $_SESSION['username']; 
    $fullname = $_POST['fullname']; 
    $dob = $_POST['dob']; 
    $intrested = $_POST['intrested']; 
    $description = $_POST['description']; 
    $sql = "UPDATE `members` 
    SET `fullname` = :firstname, 
     `dob` = :dob, 
     `intrested` = :intrested, 
     `description` = :description 
WHERE `username` = :username"; 



    $statement = $db->prepare($sql); 
    $statement->bindValue(":username", $username); 
    $statement->bindValue(":fullname", $fullname); 
    $statement->bindValue(":dob", $dob); 
    $statement->bindValue(":intrested", $intrested); 
    $statement->bindValue(":description", $description); 
    $count = $statement->execute(); 

    $db = null;  // Disconnect 
} catch (PDOException $e) { 
    echo $e->getMessage(); 
} 

正在使用用戶更新列名稱不是ID我updat使用username發生和用戶名使用會話

叫我獲得以下錯誤

SQLSTATE[HY093]: Invalid parameter number: parameter was not defined 

有人可以幫助我

+0

若您已編輯的問題來解決原來的問題你應該問的一個新問題。請關閉此問題並再次提出問題,因爲下面的答案不再適用於您所問的內容,而且我很困惑您現在的實際問題。 – Mike

回答

1

您正在執行的查詢您所設置的值之前。在執行查詢時,您嘗試使用的值尚未設置,因此沒有任何數據可以替換佔位符。

這應該工作:

<?php 

require('includes/config.php'); 
//if not logged in redirect to login page 
if (!$user->is_logged_in()) { 
    header('Location: login.php'); 
} 
//define page title 
$title = 'Members Page'; 
//include header template 

try { 

    $username = $_SESSION['username']; 
    $fullname = $_POST['fullname']; 
    $dob = $_POST['dob']; 
    $intrested = $_POST['intrested']; 
    $description = $_POST['description']; 
    $sql = "UPDATE `members` 
    SET `fullname` = :fullname, 
     `dob` = :dob, 
     `inserted` = :inserted, 
     `description` = :description 
WHERE `username` = :username"; 



    $statement = $conn->prepare($sql); 
    $params = array(
     ":username" => $username, 
     ":fullname" => $fullname, 
     ":dob" => $dob, 
     ":inserted" => $intrested, 
     ":description" => $description 
    ); 
    $count = $statement->execute($params); 

    $conn = null;  // Disconnect 
} catch (PDOException $e) { 
    echo $e->getMessage(); 
} 
+0

我得到'SQLSTATE [HY093]:無效參數編號:參數未定義'做了一些編輯檢查我的問題 – romman

+0

謝謝它的工作 – romman

1

代碼是否完成?

我看到$行,但你在哪裏定義$行?

順便說一句,在設置要使用的值之前,您正在執行查詢。

這種替換代碼:

<?php 

require('includes/config.php'); 
//if not logged in redirect to login page 
if (!$user->is_logged_in()) { 
    header('Location: login.php'); 
} 
//define page title 
$title = 'Members Page'; 
//include header template 

try { 



    $sql = "UPDATE `members` 
    SET `fullname` = :firstname, 
     `dob` = :dob, 
     `inserted` = :inserted, 
     `description` = :description 
WHERE `username` = :username"; 


    $username = $_SESSION['username']; 
    $fullname = $row['fullname']; 
    $dob = $row['dob']; 
    $intrested = $row['intrested']; 
    $description = $row['description'];  


    $statement = $conn->prepare($sql); 
    $statement->bindValue(":username", $username); 
    $statement->bindValue(":fullname", $fullname); 
    $statement->bindValue(":dob", $dob); 
    $statement->bindValue(":inserted", $intrested); 
    $statement->bindValue(":description", $description); 
    $count = $statement->execute(); 

    $conn = null;  // Disconnect 
} catch (PDOException $e) { 
    echo $e->getMessage(); 
} 
+0

我得到'SQLSTATE [HY093]:無效參數編號:參數未定義'做了一些編輯檢查我的問題 – romman

+0

有一些錯誤檢查我的問題做了一些編輯 – romman