Mysqli 在表上创建寄存器时,多重查询不起作用

Mysqli 在表上创建寄存器时,多重查询不起作用,mysqli,Mysqli,问题是,我正在尝试使用multi_查询创建多个表,并在其中两个表中的两个寄存器之后创建多个表。当我运行代码时,表在数据库中创建,但寄存器无法创建。问题是,当我用一个简单的查询做所有事情时,代码就完美地工作了。我不知道我错过了什么。。。代码如下: if (isset($_POST['usercp']) && !empty($_POST['usercp'])) { if (isset($_POST['passlogin']) && !empty($_POST

问题是,我正在尝试使用multi_查询创建多个表,并在其中两个表中的两个寄存器之后创建多个表。当我运行代码时,表在数据库中创建,但寄存器无法创建。问题是,当我用一个简单的查询做所有事情时,代码就完美地工作了。我不知道我错过了什么。。。代码如下:

if (isset($_POST['usercp']) && !empty($_POST['usercp'])) {

    if (isset($_POST['passlogin']) && !empty($_POST['passlogin'])) {

        $conn = mysqli_connect($host, $user, $pw, $db);

        if (!$conn) {
            echo "<script language='javascript'>alert('Usuario de CPanel incorrecto!!');window.location.href = 'http://here-a-page.com/';</script>";
        }
        else {

            $sql = "CREATE TABLE usercp (
            id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
            usuario VARCHAR(30) NOT NULL
            );";
            $sql = $sql . "CREATE TABLE numlink (
            id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
            Link VARCHAR(30) NOT NULL
            );";
            $sql = $sql . "CREATE TABLE login (
            id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
            Validacion_Pass VARCHAR(30) NOT NULL
            );";
            $file = fopen("UsuarioCpanel.txt", "w");
            fwrite($file, $UserCp . PHP_EOL);
            fclose($file);

            if ($conn->multi_query($sql)) {
                $PassLogin = $_POST['passlogin'];
                $consulta = " INSERT INTO usercp(usuario) VALUES('$UserCp');";
                $consulta = $consulta . "INSERT INTO login(Validacion_Pass) VALUES('$PassLogin');";
                if ($conn->multi_query($consulta)) {
                        header('location: index.php');
                    }
                else{
                    echo "Ocurrio un error creando los registros";
                }   
            }
            else{
                echo "Error creating table: " . $conn->error;
            }

        }
    }
    else{
        echo "<script language='javascript'>alert('Debes poner el Password que utilizaras con el Login del Cloaking System');window.location.href = 'http://here-a-page.com/';</script>";
    }
}
else {

    echo "<script language='javascript'>alert('Debes poner tu Usuario de CPanel');window.location.href = 'http://here-a-page.com/';</script>";
}

我在一个类似于我的问题中找到了解决问题的方法@furas在您想要执行的每个multi_查询之后使用“while(){}”解决了这个问题。出于某些原因,multi_查询不能自然运行多次。要做到这一点,您需要在每次multi_查询后写下以下几行:

while( mysqli_more_results($link) ){
    $result = mysqli_store_result($link);
    mysqli_next_result($link);
}
while( mysqli_more_results($link) ){
    $result = mysqli_store_result($link);
    mysqli_next_result($link);
}

在定义
$UserCp
的地方&为什么要再次创建表&again为什么不继续使用简单的查询解决方案呢?@gaurav$UserCp位于我的代码之上,它的值来自$\u POST[]。我使用这段代码的目的是只运行一次。。。这就像我正在编写的脚本的安装程序。不管怎样,我已经解决了一段时间的问题。。。出于某些原因,multi_查询不能自然运行多次。要做到这一点,你需要在你想做的每一个多用户查询之后放置这个while:while(mysqli_more_results($link)){$result=mysqli_store_result($link);mysqli_next_result($link)}这是福拉斯的想法,他为一个类似于我的问题提供了这个解决方案。它的效果非常好@你的常识这样做的问题是我要创建一堆表。。。所以,我不认为单独进行这些查询是正确的。在一个简单的请求中完成这一切是否更有效。所以,您只认为它更有效,或者您已经经历了一次可怕的性能降级,而您正试图解决这一问题?