所以我慢慢开始将我的网站迁移到Laravel
和我',发现至少可以说是非常具有挑战性的。我现在必须重写所有传统的sql
语句,并且文档没有提供常见sql
查询的简单片段。下面是我的登录脚本,我花了几个小时试图找出如何转换..
$query = "SELECT * FROM users WHERE email='$email' AND password='$password'";
$result = mysqli_query($connection, $query);
$count = mysqli_num_rows($result);
if ($count > 0) {
$row = mysqli_fetch_array($result);
if ($row['verified'] == 1) {
echo "Valid";
} elseif ($row['verified'] == 0) {
echo "not aValid";
}
} elseif ($count == 0) {
echo "not Valid";
}
非常感谢任何帮助或指导。我需要指出正确的方向,如何做这样的简单查询,因为我的网站充满了很多。我开始认为我可能以错误的方式编写了我的逻辑。
答案 0 :(得分:0)
感谢Laravel' Query Builder,您可以轻松完成转换查询:
$user = DB::table('users')->where(['email' => $email, 'password' => $password])->first();
if (!is_null($user)) {
if ($user->verified) {
echo 'Valid';
} else {
echo 'Not Valid';
}
} else {
echo 'Not Valid';
}
如果您的查询不是非常复杂,那么使用查询构建器构建查询实际上是一个非常简单的过程。你应该深入阅读the documentation,你应该没事。此外,当您的查询似乎没有返回您期望的结果时,您始终可以使用toSql
方法返回包含正在生成的SQL查询的字符串,因此:
dump(DB::table('users')->where(['email' => $email, 'password' => $password])->toSql());
将打印出来:
select * from `users` where (`email` = ? and `password` = ?)
问号是条件中使用的实际值的占位符,因为Laravel使用PDO绑定来构建查询,这意味着在将值传递给构建器时不需要转义值,所以不用担心SQL injection。
话虽这么说,但在我看来,您正在尝试使用该查询对用户进行身份验证。如果是这种情况,我强烈建议您使用属于Laravel的Authentication System。