如何使用特定值更新MySQL行?

时间:2014-12-19 00:34:46

标签: php mysql

我正在尝试为我正在构建的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我只是得到一个空白的白色屏幕。关于我做错什么的任何想法?

2 个答案:

答案 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(),因为您正在使用准备好的陈述