我有这个代码,由于某种原因,它输入了确切的值(包括mysql_real ...)
mysql_query("INSERT INTO members (username) VALUES ('mysql_real_escape_string($uname)')");
我该怎么重写这个,所以我没有这个问题?
答案 0 :(得分:2)
mysql_real_escape_string是一个PHP函数,而不是MySQL函数。
$value = mysql_real_escape_string($uname);
mysql_query("INSERT INTO members (username) VALUES ('$value')");
更新:内联mysql_real_escape_string
mysql_query("INSERT INTO members (username) VALUES ('".mysql_real_escape_string($uname)."')");
答案 1 :(得分:2)
你也可以使用prepared statement,其中PDO负责逃避它使用的任何数据库(不仅仅是MySQL):
$stmt = $dbh->prepare("INSERT INTO members (username) VALUES (:username)");
// either:
$stmt->bindParam(':username', $uname);
$stmt->execute();
// or as Corbin pointed out in the comments:
$stmt->execute(array('username' => $uname))