我正在做一個小型項目,用戶需要更新配置文件圖片(tbl_users中有9個字段,9個字段中只需要更新1個字段(location)for image,所以我在PDO中有代碼,在使用PDO進行圖像字段更新時出現錯誤, 錯誤顯示如下:未知的異常'PDOException'帶有消息'SQLSTATE [HY093]
致命錯誤:未收到異常'PDOException',消息'SQLSTATE [HY093]:Invalid參數編號:綁定變量的數量與令牌數量不匹配「/home/fewatrai/public_html/user_login/myprofile.php:266堆棧跟蹤:#0 /home/fewatrai/public_html/user_login/myprofile.php(266): PDOStatement-> execute()#1 {main}引發/home/fewatrai/public_html/user_login/myprofile.php 266行
我知道,錯誤來自哪裏,它應該是undefined uid值的原因(我不能這麼做! )
在同一頁上,我要顯示所有與此代碼的記錄: 隨着圖像的更新代碼:
<?php
session started.....
$stmt = $user_home->runQuery("select * from tbl_users WHERE userID=:uid");
$stmt->execute(array(":uid"=>$_SESSION['userSession']));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
?>
.....
<?php echo $row['firstName']?>
......
......
<form action="#" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" name="action" value="update" />
</form>
<?php
$connectionClass = new Database();
$conn = $connectionClass->dbConnection();
$action = isset($_POST['action']) ? $_POST['action'] : "";
if($action == "update"){
$location = $_POST['location'];
$path = "images/" . $_FILES['location']['name'];
move_uploaded_file($_FILES['location']['tmp_name'], "uploads/".$path);
$query = 'update tbl_users set location = :location WHERE userID=:uid';
$stmt = $conn->prepare($query);
$stmt->bindParam(':location', $location, PDO::PARAM_STR);
// echo "here should be bindParam for userID field, but i really have no idea on it..";
$stmt->execute();
}?>
我的代碼頁是如下的數據庫連接和文件上傳頁面。
dbconfig.php
<?php
class Database
{
private $host = "localhost";
private $user= "root";
private $pass= "";
private $db= "pdo_db";
public $conn;
public function dbConnection()
{
$this->conn = null;
try {
$this->conn = new PDO("mysql:host=" . $this->host . ";db=" . $this->db, $this->user, $this->pass);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $exception) {
echo "Connection error: " . $exception->getMessage();
}
return $this->conn;
}
}
?>
你究竟在哪裏設置了'$ conn'? - >'$ conn = new Database();' – Rasclatt
實際上,它可能更像'$ db = new Database(); $ conn = $ db-> dbConnection();' – Rasclatt