php - 查询返回 null 并期望 1
问题描述
这是一个名称检查,在我的数据库中检查用户名时期望结果为 1。
不幸的是,我得到一个空响应(所以回显错误 5)。如果有人看到 php 有问题,我将不胜感激
代码
$username = $_POST["name"];
$password = $_POST["password"];
$namecheckquery = "SELECT username FROM users WHERE username = ' " . $username . " ' ";
$namecheck = mysqli_query($con, $namecheckquery) or die("2: name check query failed"); // error code #2 = name check query failed
if(mysqli_num_rows ($nameCheck) !=1)
{
echo "5: Either no user with name, more than one."; //error code number 5 number names does not match one
exit();
}
解决方案
如果您打印查询,您会注意到 $username 周围有空格,除非您插入带有这些空格的用户名,否则您无法获得结果。
输入 John 作为用户名时查询字符串错误:
SELECT username FROM users WHERE username = ' John '
// Wrong spaces ^ ^
删除双引号和单引号之间的空格:
$namecheckquery = "SELECT username FROM users WHERE username = '" . $username . "'";
更好的是,删除空格并避免连接:
$namecheckquery = "SELECT username FROM users WHERE username = '$username'";
当字符串用双引号括起来时,PHP 会将变量替换为其对应的值。
最后,查询没有返回 null,函数 mysqli_num_rows($nameCheck) 返回 0,因为没有找到匹配项。
推荐阅读
- regex - Rust 程序中的正则表达式
- python - 如何从 GCS 存储桶加载 TensorFlow 模型
- javascript - 从 Axios 获取调用更新后 DataTable 变形
- python-3.x - 为什么字典元素不能与 python 中的 max 函数一起使用?
- caching - 深度缓存层次结构中的内存访问时间
- .net - Azure 功能无法访问托管在内部 windows 服务器中的 WCF 服务
- php - 为 WooCommerce 中有限数量的现有订单更新多个元数据
- php - onclick徽标时如何更改徽标href
- c# - 在 C# 中为 Unity 创建多个列表
- c++ - 如何在c ++中实现命名参数,如属性