php - 第二个 mysqli_query 不起作用

标签 php mysql

我有以下用于注册用户的 php 脚本

<?php

require_once "setting.php";
extract($_REQUEST);

$link = mysqli_connect($dbHost, $dbUser, $dbPass, $dbName);

if (mysqli_connect_errno()){
    echo "Connection failed".mysqli_connect_error();
}

$initQuery = "SELECT * FROM users WHERE email = ".$email;
$initResult = mysqli_query($link, $initQuery);

$dbResults = mysqli_fetch_array($initResult, MYSQLI_ASSOC);

if($dbResults == null ){
    echo('in the if statement');

    $userId = uniqid();
    echo($userId);

    $query = "INSERT INTO users(email, password, userId) VALUES ($email, $password, $userId )";
    echo($query);

    $addResult = mysqli_query($link, $query);
    echo($addResult);
}

mysqli_free_result($initResult);
mysqli_free_result($addResult);
mysqli_close($link);
?>

第二个 mysqli_query 没有添加用户,我检查了 sql 语句的语法,它工作正常。有人有什么想法吗?

我还在考虑也许尝试编写一个 mysqli_multi_query 来运行这两个查询。我读到,如果第一个查询失败,multi_query 将返回 false,是否有办法让它在第一个查询失败时执行第二个查询,而在第一个查询成功时不执行第二个查询?

最佳答案

看在上帝的份上,如果不使用准备好的语句,至少将字符串值放在引号内

"INSERT INTO users(email, password, userId) VALUES ($email, $password, $userId)"

无效。这些字符串值应该在引号内

"INSERT INTO users(email, password, userId) VALUES ('$email', '$password', '$userId')"

在实现上述解决方案之前,请阅读以下内容:

How can I prevent SQL injection in PHP?

至少,请使用mysqli_real_escape_string转义值

关于php - 第二个 mysqli_query 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24198267/

相关文章:

php - WooCommerce - 当标签云中没有 'in stock' 产品时如何隐藏产品标签

php youtube 视频下载

php - Symfony2 表单 - 日期字段类型允许错误的日期

php - 统计并检查json查询结果

php - mysql 检查用户是否存在 > 0

php codeigniter事件记录替换功能

php - 站点上传到 Plesk 面板时无法连接到数据库

javascript - jQPlot X 轴上的日期刻度间隔不起作用

MySQL - 从 SET 字段中的 ID 选择所有引用

php - Android Php Mysql 插入重复