我正在尝试为我正在构建的Web应用程序创建一个配置文件页面,并且我已经构建了配置文件页面,并且它将数据从数据库中拉出来。当我尝试更新信息时,我遇到了麻烦。
它应该只更新与当前登录成员的用户名匹配的行。这就是我到目前为止所做的:
我从表单中提取数据:
$phpro_email = filter_var($_POST['phpro_email'], FILTER_SANITIZE_STRING);
$phpro_fname = filter_var($_POST['phpro_fname'], FILTER_SANITIZE_STRING);
$phpro_lname = filter_var($_POST['phpro_lname'], FILTER_SANITIZE_STRING);
我连接到数据库:
$dbh = new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
我尝试使用UPDATE
我的表名phpro_users
中的三列来更新正确的行,并使用WHERE
指定行.phpro_username等于当前值登录用户。
$stmt = $dbh->prepare("UPDATE phpro_users SET phpro_fname = :phpro_fname, phpro_lname = :phpro_lname, phpro_email = :phpro_email WHERE phpro_username = :phpro_username");
$stmt->bindParam(':phpro_username', $phpro_username);
$stmt->bindParam(':phpro_fname', $phpro_fname, PDO::PARAM_STR);
$stmt->bindParam(':phpro_lname', $phpro_lname, PDO::PARAM_STR);
$stmt->bindParam(':phpro_email', $phpro_email, PDO::PARAM_STR);
$stmt->execute();
当我点击表单上的提交时,使用此脚本作为其操作并且method=post
我只是得到一个空白的白色屏幕。关于我做错什么的任何想法?
答案 0 :(得分:3)
更改
$stmt->bindParam(':phpro_username', $phpro_username);
到
$stmt->bindParam(':phpro_username', $phpro_username, PDO::PARAM_STR);
可能是某种奇怪的行为违约,最好强迫它达到一个价值。
答案 1 :(得分:0)
尝试更改SQL以使用正确的UPDATE
语法
UPDATE phpro_users SET
phpro_fname = :phpro_fname,
phpro_lname = :phpro_lname,
phpro_email = :phpro_email
WHERE phpro_username = :phpro_username
您也不需要使用filter_var()
,因为您正在使用准备好的陈述