我是PHP/MySQL新手。我正在进行身份验证,但我的代码不允许我进入正确的页面。以下是我的资料:
<?php
$username = null;
$password = null;
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
require_once('database.php');
if(!empty($_POST["username"]) && !empty($_POST["password"])) {
$username = $_POST["username"];
$password = $_POST["password"];
$query = $connection->prepare("SELECT user_id FROM users WHERE user_login = ? and user_password = PASSWORD(?)");
$query->bind_param("ss", $username, $password);
$query->execute();
$query->bind_result($userid);
$query->fetch();
$query->close();
if(!empty($userid)) {
// Stuff happens
} else {
// goes back to the login page
此时,$userid似乎是空的,因为我一直回到登录页面。database.php只是连接,我已经确定这是可以的。我还确认了表单正确提交了$_POST[“username”]和$_POST[“password”],上面的代码创建了$username和$password。我可以附和这些以看到正确的结果。数据库中的字段名与SQL语句中的字段名匹配。但由于某种原因,$userid为空。我看过其他的帖子,但我几乎不明白自己在做什么,更不用说别人在做什么或在解释什么了。我觉得这是一个很基本的东西,但是它是什么呢?
为什么那个密码是()?
$query = $connection->prepare("SELECT user_id FROM users WHERE user_login = ? and user_password = ?");
$query->bind_param("ss", $username, $password);
$query->execute();
$query->bind_result($userid);
$query->fetch();
$query->close();
问题内容: 我正在重新设计一个使用最小数据库的PHP驱动的网站。原始版本使用“伪准备语句”(执行引号和参数替换的PHP函数)来防止注入攻击并将数据库逻辑与页面逻辑分开。 用一个使用PDO和真正的预备语句的对象替换这些临时功能似乎很自然,但是在对它们进行阅读之后,我不太确定。PDO似乎仍然是一个好主意,但是准备好的语句的主要卖点之一是能够重用它们……我永远不会。这是我的设置: 这些语句都很简单。大多
我有一个cql查询,我想执行。cql字符串如下所示: 我的应用程序在数据税驱动程序之上有两层抽象。在一个层中,我想绑定前两个参数,而在另一层中我想绑定最后一个参数。问题是,如果我绑定前两个参数,我会得到一个无法绑定另一个参数的BoundStatement。我错过了什么吗?能做到吗? 我们使用的是datastax驱动程序版本2.0.3。 谢谢,安纳托利。
我想知道使用比有什么好处? 最简单的方法是: 如您所见,我可以将数据绑定到< code>preparedStatement而无需< code>boundStatements。< code>boundStatement在哪里有用?
Java代码如下所示: 以下是我正在使用的所有东西的版本,以供参考:
我犯了什么错?