Mysqli 在表上创建寄存器时,多重查询不起作用
问题是,我正在尝试使用multi_查询创建多个表,并在其中两个表中的两个寄存器之后创建多个表。当我运行代码时,表在数据库中创建,但寄存器无法创建。问题是,当我用一个简单的查询做所有事情时,代码就完美地工作了。我不知道我错过了什么。。。代码如下:Mysqli 在表上创建寄存器时,多重查询不起作用,mysqli,Mysqli,问题是,我正在尝试使用multi_查询创建多个表,并在其中两个表中的两个寄存器之后创建多个表。当我运行代码时,表在数据库中创建,但寄存器无法创建。问题是,当我用一个简单的查询做所有事情时,代码就完美地工作了。我不知道我错过了什么。。。代码如下: if (isset($_POST['usercp']) && !empty($_POST['usercp'])) { if (isset($_POST['passlogin']) && !empty($_POST
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)}这是福拉斯的想法,他为一个类似于我的问题提供了这个解决方案。它的效果非常好@你的常识这样做的问题是我要创建一堆表。。。所以,我不认为单独进行这些查询是正确的。在一个简单的请求中完成这一切是否更有效。所以,您只认为它更有效,或者您已经经历了一次可怕的性能降级,而您正试图解决这一问题?