避免数据冗余

时间:2017-08-15 09:37:46

标签: php html sql

我正在为我的音乐网站制作代码。这是注册阶段的一部分。我希望代码检查数据库中是否有任何现有的电子邮件地址,如果找到,打印"电子邮件("电子邮件地址")已经存在,但如果找不到,则将信息插入数据库。如果找到类似于从html表单提交的电子邮件地址的电子邮件地址,代码似乎运行,但如果没有找到电子邮件,系统将停止并在此之后不执行任何操作。有人可以帮我弄清楚我哪里出错了。

if ($_POST['submit2']){ 
$fname = $_POST['Fname'];
$sname = $_POST['Sname'];
$email = $_POST['Emailaddress'];
$pass = $_POST['newpassword'];

$sql= "select * from cust_information where email = '$email';";
$results = mysqli_query($conn, $sql) or die(mysqli_error($conn));
$row = mysqli_fetch_array($results) or die(mysqli_error($conn));

    if (count($row) < 0)
    {
        $sql2 = "insert into cust_information (firstName, lastName, email, password) values(`$fname`, `$sname`, `$email`, `$pass`)";
         $results2 = mysqli_query($conn, $sql) or die(mysqli_error($conn));
         if (!$results2){
         echo "successfully uploaded cust";
        }   
    }else{
         echo "email <strong>".$row["email"]. " </strong> already Exist";
    }
}

1 个答案:

答案 0 :(得分:2)

您正在检查返回的结果数是否小于0.数组的长度(以及找到的结果数)不能小于0. manual显示mysqli_fetch_array如果未找到结果,则返回null,因此您要检查$row === null

但是,我将借此机会指出,将变量连接到SQL查询字符串会让您对称为SQL Injection的严重安全问题持开放态度。由于代码当前已设置,表单的用户将能够在您的数据库上运行他们喜欢的任何查询,这绝对不是您想要的。我建议您阅读prepared statements以缓解此问题。

相关问题