$username = $_POST['username'];
$password = $_POST['password'];
$db = new PDO('mysql:host='.$DB_HOST.';dbname='.$DB_DATABASE.'', ''.$DB_USER.'', ''.$DB_PASSWORD.'');
$query = $db->query("SELECT * FROM login_details WHERE username=:username AND password=:password");
$query->bindValue(':username', $username, PDO::PARAM_STR);
$query->bindValue(':password', $password, PDO::PARAM_STR);
$query->execute();
$row_count = $query->rowCount();
尝试从数据库中执行简单的用户名和PW检查。 我超越了沮丧的程度......
答案 0 :(得分:2)
请改用prepare。
$username = $_POST['username'];
$password = $_POST['password'];
$db = new PDO('mysql:host='.$DB_HOST.';dbname='.$DB_DATABASE.'', ''.$DB_USER.'', ''.$DB_PASSWORD.'');
$query = "SELECT * FROM login_details WHERE username=:username AND password=:password";
$statement = $db->prepare($query);
$statement->bindValue(':username', $username, PDO::PARAM_STR);
$statement->bindValue(':password', $password, PDO::PARAM_STR);
$statement->execute();
$row_count = $statement->rowCount();
echo $row_count;
更多信息here。
答案 1 :(得分:1)
使用以下代码查看...
$stmt = $db->prepare("SELECT * FROM login WHERE username=:username AND password=:password");
$stmt->bindValue(":username", $username, PDO::PARAM_STR);
$stmt->bindValue(":password", $password, PDO::PARAM_STR);
$stmt->execute();
通过$ db-> prepare(“sql”)支持pdo $ stmt 而不是查询。然后,您可以将params绑定到预准备语句并执行它。
答案 2 :(得分:0)
由于这是第一个结果,如果您Google标题中的错误,这里是解决PDO::quote()
问题的方法。
如果您正在运行PDO实例/连接,只需连接即可。
//PDO::quote();
$pdo->quote();
如果您正在使用数据库,则应将连接设置在文件的顶部,因此这不成问题。
如果在没有PDO连接的情况下需要类似的功能,则可以使用以下功能。
function escape($value) {
$search = ["\\", "\x00", "\n", "\r", "'", '"', "\x1a"];
$replace = ["\\\\", "\\0", "\\n", "\\r", "\'", '\"', "\\Z"];
return str_replace($search, $replace, $value);
}
或者,您可以使用类似这样的方法,但是根据情况,您需要使用htmlspecialchars_decode()
来撤消操作:
function escape($value) {
return strip_tags(htmlspecialchars($value));
}
或者将两者混搭。尽管由于重叠可能会产生一些意外的结果。