我正在尝试使用表单前端检查数据库中是否存在用户。 如果用户不在那里,则不添加到数据库中。
添加用户时代码无效,即使用户存在,也会添加用户。
这是我的代码:
<?php
$connection = mysql_connect("localhost", "dbuser", "dbpasswd"); // Establishing Connection with Server
$db = mysql_select_db("ldap", $connection); // Selecting Database from Server
if(isset($_POST['submit'])){ // Fetching variables of the form which travels in URL
$netid = $_POST['netid'];
$univid = $_POST['univid'];
if($netid !=''||$univid !=''){
//Insert Query of SQL
$query = mysql_query("SELECT FROM user ( UserName, temppass WHERE UserName=$netid");
if(mysql_num_rows($sql)>=1)
{
echo"NetID $netid already exists";
}
else
{
//insert query goes here
$query = mysql_query("insert into user( UserName, temppass ) values ('$netid', '$univid')");
}
echo "<br/><br/><span>User Registered successfully...!!</span>";
}
else{
echo "<p>Registration Failed <br/> Some Fields are Blank....!!</p>";
}
}
mysql_close($connection); // Closing Connection with Server
?>
答案 0 :(得分:2)
您可以执行以下操作:
$query = mysql_query("SELECT COUNT(UserName) as total FROM user;");
然后
$result = mysql_fetch_assoc($query);
用户数将在$ result ['total']中。另外,mysql_ *方法不如准备好的语句(google it)。
答案 1 :(得分:0)
您的select
查询有很多错误。
SELECT FROM user ( UserName, temppass WHERE UserName=$netid
第一个问题你没有选择任何东西。第二个问题我不知道( UserName, temppass
是什么,也许你想要选择的列?第三个问题是Username
可能是一个字符串,而不是整数,因此该值应该在引号中。一旦你引用它,虽然你会打开SQL注射。
以下是您当前查询的有效版本。
SELECT UserName, temppass FROM user WHERE UserName='$netid'
这是关于mysql的select
:http://dev.mysql.com/doc/refman/5.7/en/select.html
以下是有关SQL注入的一些链接:
How can I prevent SQL injection in PHP? {
{3}}
您也不应该使用现已弃用且不安全的mysql_
函数。 http://php.net/manual/en/security.database.sql-injection.php
其他问题:
if(mysql_num_rows($sql)>=1)
$sql
未定义。
我不知道$_POST['netid']
是什么,但听起来像是id
,而不是用户名。
您不应以纯文本格式存储密码。
您应该启用错误报告和/或监控错误日志。