我是php的新手,并且已经通过php学院关注youtube上的教程了。基本上它是一个允许登录,注册和记住我选项的脚本,教程是2年,所以我试图将一些mysql函数更改为mysqli但是我遇到了一些问题..当我进入一个用户名和命中登录我得到一个“mysql_num_rows()期望参数1是资源,在user.php第9行中给出的字符串”错误,我的if语句说“找不到用户名尝试注册“但它应该显示”存在“,因为我输入的用户名实际上是在数据库中..我很困惑,如果脚本不是最安全的话,也请原谅我,我知道事情应该被转义等等,你的帮助将不胜感激
User.php:
<?php
function user_exists($username)
{
$username=$username;
$query = ("SELECT count(`user_id`) FROM `users` WHERE `username`='$username'");
if(mysql_num_rows($query)===1)
{return true;
} else{
return false;
}
}
?>
的login.php
<?php
include ('core/init.php');
if(user_exists('drellen')===true){
echo "exists";
}
if(empty($_POST)===false){
$username=$_POST['username'];
$password=$_POST['password'];
if(empty($username) === true|| empty($password)=== true)
{
echo $error[]="Enter a username and password";
}
else if (user_exists($username)===false)
{
echo $error[]="Cannot find username try registering";
}
}
请注意,init.php中包含了users.php ***** 可能混合了旧的mysql和新的mysqli函数混合在一起,帮助使它充满mysqli将不胜感激
答案 0 :(得分:1)
您尚未使用mysql_query()
来运行查询。如何获得没有它的行数。
注意 - &gt;您应该使用mysqli_*
函数代替mysql_*
$query = mysqli_query("SELECT count(`user_id`) FROM `users` WHERE `username`='$username'");
//$row = mysqli_fetch_array($query);
$count = mysqli_num_rows($query);
答案 1 :(得分:1)
你可以试试这个
function user_exists($username)
{
$result = mysql_query("SELECT `user_id` FROM `users` WHERE `username`='$username' LIMIT 1 ") or die(mysql_error());
if($row = mysql_fetch_assoc($result))
{
return true;
}
else
{
return false;
}
}
注意: mysql_*
已弃用。使用mysqli_*
或PDO
更新2:
function user_exists($username)
{
global $your_db_conn;
$sql = "SELECT `user_id` FROM `users` WHERE `username`='$username' LIMIT 1 ";
$result = mysql_query($sql, $your_db_conn) or die(mysql_error());
if($row = mysql_fetch_assoc($result))
{
return true;
}
else
{
return false;
}
}
答案 2 :(得分:-2)
这是一个可行的例子
经过一番挖掘之后,我发现此新函数中最重要的部分是调用全局$ db ,并用于清理添加的$db, $data
和查询中的内容。如果您查找使用mysqli_query($db, $sql);
的其他基本方法,就会很容易地掌握到这一点
<?php
$db = mysqli_connect('localhost', 'root', 'password', 'database');
function sanitize($data) {
global $db;
return mysqli_real_escape_string($db, $data);
}
function user_exists($username)
{
global $db;
$username = sanitize($username);
$sql = "SELECT `id` FROM `Users` WHERE `username`='$username' LIMIT 1";
$result = mysqli_query($db, $sql) or die('query');
if($row = mysqli_fetch_assoc($result))
{
return true;
}
else
{
return false;
}
}
?>
<h1>test</h1>
<?php
if (user_exists('admin') === true){
echo "Good news, this exists";
} else {
echo "no good";
}
?>