1

我想通过下面的代码更新 MySQL 数据库,但它不起作用,为什么?

<?php
    mysql_connect("localhost","root","");
    mysql_select_db("timer");
    $update=$_COOKIE['name'];
    mysql_query("UPDATE user SET password='2' WHERE username=$update");
?>
4

4 回答 4

1

字符串值应该被引用:MySQL String Literals

mysql_query("UPDATE user SET password='2' WHERE username='$update'");
于 2013-07-19T08:42:22.013 回答
1
$dsn = 'mysql:dbname=timer;host=127.0.0.1';
$user = 'root';
$password = '';

$update=$_COOKIE['name'];

$query = 'UPDATE user SET password='2' WHERE username=(?)';

try {
    $dbh = new PDO($dsn, $user, $password);
    $dbh->prepare( $query )->execute( array($query) );

} catch (PDOException $e) {
    echo 'Connection failed ' . $e->getMessage();
}

无法确定它是否有效,因为我不知道您的 $_COOKIE 数组中有什么。

但是代码应该是这样的。

为了安全起见,您可以向变量 $update 添加一些文本转换,例如添加斜杠或其他。

于 2013-07-19T08:53:21.930 回答
0

使用准备好的查询,你这样做的方式不是一个好习惯。还要检查是否$update不为空,否则查询将不起作用,最后,使用mysqli_*函数而不是mysql_*:)

于 2013-07-19T08:44:29.700 回答
0
<?php
    mysql_connect("localhost","root","");
    mysql_select_db("timer");
    $update=$_COOKIE['name'];
    mysql_query("UPDATE ´user´ SET password='2' WHERE username='$update'");
?>

尝试在此查询中提及您的表的名称,如下所示:“用户”

让我建议您,如果您的查询不起作用,那么您可以将整个查询放在回显(或打印)中以查看问题所在。

例如:

echo "mysql_query(\"UPDATE user SET password='2' WHERE username=$update\";
于 2013-07-19T08:51:25.350 回答