php - MySQL:使用相同连接对象的多个查询

标签 php mysql

我的一个网站有一个注册脚本,我首先检查用户输入的电子邮件是否与数据库中的电子邮件匹配,如果匹配,则返回找到匹配项,并且不插入其将新帐户添加到数据库中。

- 我想知道是否有一种方法可以仅使用一个 mysql 连接对象来完成我正在做的事情,而不是初始化其中两个?

- 另外,我觉得我的代码非常困惑,并且希望获得一些关于如何更好地编写代码的额外意见。谢谢!

注意:验证 bool 值将在将来使用,因此请忽略它不执行任何操作的事实。

<?php
include '../portfolio/libraries/settings.php';

$first = $_POST['first'];
$middle = $_POST['middle'];
$last = $_POST['last'];
$email = $_POST['email'];

$emailFound = false;
$validation = true;

if ($_POST['type'] == "Student") {
    $type = "0";
} else {
    $type = "1";
}

$connect = mysqli_connect($HOST, $DB_USER, $DB_PASS, $DATABASE);
$connect1 = mysqli_connect($HOST, $DB_USER, $DB_PASS, $DATABASE);

$result = $connect1->prepare("SELECT email FROM AUTH_User WHERE email = ?");
$result->bind_param("s", $email);
$result->execute();

while($result->fetch()) {
    $emailFound = true;
}

if (!$emailFound) {
    if ($middle != "" || $middle != null) {
        $query = "INSERT INTO AUTH_User (email, FirstName, MiddleName, LastName, is_faculty) VALUES (?, ?, ?, ?, ?)";
        $stmt = $connect->prepare($query);
        $stmt->bind_param("ssssi", $email, $first, $middle, $last, $type);

        if ($stmt->execute() && $validation) {
            echo "success";
        }
    } else {
        $query = "INSERT INTO AUTH_User (email, FirstName, LastName, is_faculty) VALUES (?, ?, ?, ?)";
        $stmt = $connect->prepare($query);
        $stmt->bind_param("sssi", $email, $first, $last, $type);

        if ($stmt->execute() && $validation) {
            echo "success";
        }
    }
} else {
    echo "found";
}

?>

最佳答案

您只能使用一个 $connect :)

也许我可以推荐您使用 PDO 进行查询:http://php.net/manual/en/book.pdo.php

我尝试用自己的经验清除你的代码,所以我没有更好的编码方法;)

include '../portfolio/libraries/settings.php';

$first = $_POST['first'];
$middle = $_POST['middle'];
$last = $_POST['last'];
$email = $_POST['email'];  
$emailFound = false;
$validation = true;

$type = ($_POST['type'] == "Student")? 0 : 1 ;

$connect = mysqli_connect($HOST, $DB_USER, $DB_PASS, $DATABASE);

$result = $connect->prepare("SELECT email FROM AUTH_User WHERE email = ?");
$result->bind_param("s", $email);
$result->execute();

if(!$result->fetch()) {
    if (isset($middle)) {
        $query = "INSERT INTO AUTH_User (email, FirstName, MiddleName, LastName, is_faculty) VALUES (?, ?, ?, ?, ?)";
        $stmt = $connect->prepare($query);
        $stmt->bind_param("ssssi", $email, $first, $middle, $last, $type);

        if ($stmt->execute() && $validation)
            echo "success";

    } else {
        $query = "INSERT INTO AUTH_User (email, FirstName, LastName, is_faculty) VALUES (?, ?, ?, ?)";
        $stmt = $connect->prepare($query);
        $stmt->bind_param("sssi", $email, $first, $last, $type);

        if ($stmt->execute() && $validation)
            echo "success";
    }
} else {
    echo "found";
} 

关于php - MySQL:使用相同连接对象的多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24684520/

相关文章:

javascript - 动态输入不起作用

c# - 提高 C# 中 SQL SELECT 的性能

python - 获取 MySQL 错误

php - SQL 查询 OR 和 AND

java - 尝试从特定列检索值时,获取 java.lang.String 无法转换为 JSONObject

php - 最大 int 值结果函数 time()

php - 通过 PHP 大量插入 MySQL 数据库会跳过名称

mysql - 为什么这个mysql语法错误

javascript - PHP Cookie 未设置/工作

php 和 mysql 从 mysql 选择 5 行