Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
确保唯一用户名的Php_Php_Mysql_Mysqli - Fatal编程技术网

确保唯一用户名的Php

确保唯一用户名的Php,php,mysql,mysqli,Php,Mysql,Mysqli,我有一个注册页面,我想确保用户名是唯一的。我已经在这里尝试了所有的解决方案,但没有任何效果 这是我当前遇到的错误: Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\xampp\htdocs\project\projectregistered.php on line 16 Query was empty 以下是我的php: <?php $con=mysqli_connect("localhos

我有一个注册页面,我想确保用户名是唯一的。我已经在这里尝试了所有的解决方案,但没有任何效果

这是我当前遇到的错误:

Warning:  mysqli_query() expects at least 2 parameters, 1 given 
in C:\xampp\htdocs\project\projectregistered.php on line 16
Query was empty
以下是我的php:

 <?php
 $con=mysqli_connect("localhost","root","","test");
 // Check connection
 if (mysqli_connect_errno()) {
     echo "Failed to connect to MySQL: " . mysqli_connect_error();
 }

$username = $_POST['username'];  

echo $username;

$query = mysqli_query("SELECT * FROM projectuser WHERE username='$username'");

$result1 = mysql_query($query) or die (mysql_error().$query);    
$count = mysql_num_rows($result1);

if ($count>0) {
echo 'Sorry! This Username already exists!';
} else {
    $surname = $_POST['surname'];
    $sql = "INSERT INTO projectuser (firstname, surname, username, password, location)
            VALUES
            ('$_POST[firstname]', '".mysql_real_escape_string($surname)."', '$_POST[username]', '$_POST[password]', '$_POST[location]')";
}

if (!mysqli_query($con,$sql)) {
    die('Error: ' . mysqli_error($con));
}
echo "1 record added ".$sql;

mysqli_close($con);

?>

在使用过程方法时,还需要将连接句柄作为第一个参数传递。应该是

mysqli_query($con, "SELECT * FROM projectuser WHERE username='$username'");
另外,使数据库表中的
username
唯一

更新:
我刚刚意识到您同时使用了
mysql\uuu
mysqli\uu
函数。最好坚持第二条。所以你的代码应该是:

$query = "SELECT * FROM projectuser WHERE username='$username'";
$result = mysqli_query($con, $query);
$count = mysqli_num_rows($result);

但是如上所述,如果将
username
列设置为
UNIQUE
,则根本不需要该检查。您可以在插入后使用检查记录是否已插入。如果尚未插入,则
UNIQUE
约束已触发。这种方法比只检查用户名是否已存在而先选择更有效。

在使用过程方法时,还需要将连接句柄作为第一个参数传递。应该是

mysqli_query($con, "SELECT * FROM projectuser WHERE username='$username'");
另外,使数据库表中的
username
唯一

更新:
我刚刚意识到您同时使用了
mysql\uuu
mysqli\uu
函数。最好坚持第二条。所以你的代码应该是:

$query = "SELECT * FROM projectuser WHERE username='$username'";
$result = mysqli_query($con, $query);
$count = mysqli_num_rows($result);

但是如上所述,如果将
username
列设置为
UNIQUE
,则根本不需要该检查。您可以在插入后使用检查记录是否已插入。如果尚未插入,则
UNIQUE
约束已触发。这种方法比只检查用户名是否已经存在而先选择更有效。

在MySQL表中使
用户名
列唯一是最简单的方法

CREATE UNIQUE INDEX uname_uniq ON projectuser (username);
这将防止在
INSERT
UPDATE


在MySQL表中使
用户名
列唯一是实现这一点的最简单方法

CREATE UNIQUE INDEX uname_uniq ON projectuser (username);
这将防止在
INSERT
UPDATE


大多数mysqli_*函数都希望将mysqli实例作为第一个参数

或者可以使用$con->function(),而无需额外参数

p、 美国:不要混合使用mysqli和mysql


要确保用户名是唯一的,只需在列中添加唯一索引。。。(并检查是否设置了$con->error)

大多数mysqli_*函数都希望将mysqli实例作为第一个参数

或者可以使用$con->function(),而无需额外参数

p、 美国:不要混合使用mysqli和mysql


要确保用户名是唯一的,只需在列中添加唯一索引。。。(并检查是否设置了$con->error)

我仍然收到错误:警告:mysql\u query()希望参数1是字符串,第18行C:\xampp\htdocs\project\projectregistered.php中给出的对象可捕获致命错误:第18行C:\xampp\htdocs\project\projectregistered.php中的类mysqli\u result的对象无法转换为字符串等待,我刚刚意识到,您也在使用
mysql\uuu
以及
mysqli\uu
函数。。。最好坚持使用mysqli(),只需删除整行代码(
$result1=mysql\u query($query)或死(mysql\u error().$query)这没有任何意义哈,我也这么认为,但当我更改它们时,会出现更多错误我只是进一步更新了答案,所以您可以避免检查;-)我仍然得到错误:警告:mysql\u query()希望参数1是字符串,在第18行的C:\xampp\htdocs\project\projectregistered.php中给出的对象可捕获致命错误:在第18行的C:\xampp\htdocs\project\projectregistered.php中,mysqli\u result类的对象无法转换为字符串等待,我刚刚意识到,您也在使用
mysql\uuu
以及
mysqli\uu
函数。。。最好坚持使用mysqli(
),只需删除整行代码(
$result1=mysql\u query($query)或死(mysql\u error().$query)这没有任何意义哈,我也这么认为,但当我更改它们时,会出现更多错误我只是进一步更新了答案,所以您可以避免检查;-)你混合了mysql和mysqli函数,坚持其中一个(如果是mysqli更好)你混合了mysql和mysqli函数,坚持其中一个(如果是mysqli更好),我知道,但我想尝试通过php实现它first@user1944305这样,您的代码总体上看起来是正确的,但您需要修复现有的mysql/mysqli组合。修复它,测试它并重新发布代码,如果它仍然不工作,我知道,但我想尝试通过php实现它first@user1944305这样,您的代码总体上看起来是正确的,但您需要修复现有的mysql/mysqli组合。修复这个问题,测试它,如果仍然不起作用,则重新发布代码