使用 PDO 错误更新到数据库
UPDATE to database using PDO error
我使用 PDO 使用以下方法将我的值更新为 table
形式
<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
我更新是使用 username
进行的,用户名是使用会话
调用的
我收到以下错误
SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
谁能帮帮我
您在设置值之前正在执行查询。在执行查询时,您尝试使用的值尚未设置,因此没有任何数据可以替换占位符。
这应该有效:
<?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();
}
代码完成了吗?
我看到了 $row 但你在哪里定义了 $row ?
顺便说一句,您在设置要使用的值之前正在执行查询。
将您的代码替换为:
<?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();
}
我使用 PDO 使用以下方法将我的值更新为 table
形式
<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
我更新是使用 username
进行的,用户名是使用会话
我收到以下错误
SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
谁能帮帮我
您在设置值之前正在执行查询。在执行查询时,您尝试使用的值尚未设置,因此没有任何数据可以替换占位符。
这应该有效:
<?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();
}
代码完成了吗?
我看到了 $row 但你在哪里定义了 $row ?
顺便说一句,您在设置要使用的值之前正在执行查询。
将您的代码替换为:
<?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();
}