gpt4 book ai didi

php - 首次使用后无法创建自动sql表

转载 作者:行者123 更新时间:2023-11-29 11:46:09 25 4
gpt4 key购买 nike

我是 PHP 和 SQL 新手...

我正在尝试根据网址创建新表,但它仅在我第一次使用它时才有效。之后就不可能了。

这是我的 PHP 代码:

 if(isset($_GET['id'])){
$tabela = $_GET['tabela'];
$_GET['id'];
$criar = $tabela . $nivel . $page_id;

// Se clicar no botão 'confirmar', então ele faz o seguinte:
if(isset($_POST['submit'])){
$titulo = $_POST['titulo'];
$_FILES['imagem']['tmp_name'];
$texto = $_POST['texto'];


// Se um destes campos estiver vazio:
if($titulo=='' or $imagem=='' or $texto==''){

echo "Preencha todos os campos para o menu!";

exit(); }

// Se não houver campos vazios, ele faz: else {

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "site";


// Ligação à base de dados:
$conn = new mysqli($servername, $username, $password, $dbname);


// Verifica a ligação:
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

// Cria a nova tabela:
$sql = "CREATE TABLE IF NOT EXISTS $criar (
id INT(9) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
titulo VARCHAR(255),
imagem LONGBLOB,
texto TEXT,
grupo INT(9),
FOREIGN KEY (grupo) REFERENCES $tabela(id)
)";


// Se conseguir ligar-se à base de dados e criar uma nova tabela, ele insere os dados na nova tabela:
if ($conn->query($sql) === TRUE) {


include("includes/connect.php");
mysql_query("SET NAMES 'utf8'");

move_uploaded_file($image_tmp,"../imagens/$imagem");


$insert_query = "INSERT INTO $criar (titulo, imagem, texto, grupo) VALUES ('$titulo','$imagem','$texto','$page_id')";


// Se inserir os dados na nova tabela, ele dá uma mensagem de sucesso:
if(mysql_query($insert_query)){

echo "<script>alert('Menu inserido com sucesso!')</script>";
echo "<script>window.open('index.php','_self')</script>";
}

else{
echo "Erro: " . $insert_query . "<br>" . $conn->error;
}
}



// Caso ele não consiga criar uma nova tabela (porque já existe), ele insere os dados na tabela já existente:
else {



include("includes/connect.php");
mysql_query("SET NAMES 'utf8'");


// Cria a nova tabela:
$sql = "CREATE TABLE IF NOT EXISTS $criar (
id INT(9) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
titulo VARCHAR(255),
imagem LONGBLOB,
texto TEXT,
grupo INT(9),
FOREIGN KEY (grupo) REFERENCES $tabela(id)
)";

if(mysql_query($sql)){

echo "sim!";
}
else {
echo "não!";
}

move_uploaded_file($image_tmp,"../imagens/$imagem");

$insert_query = "INSERT INTO $criar (titulo, imagem, texto, grupo) VALUES ('$titulo','$imagem','$texto','$page_id')";


// Caso consiga inserir os dados na tabela já existente, dá uma mensagem de sucesso:
if(mysql_query($insert_query&&$sql)){

echo "<script>alert('Menu inserido com sucesso!')</script>";
echo "<script>window.open('index.php','_self')</script>";

}
else{

echo "isto não está a correr bem!";
}

// Fecha a ligação à base de dados:
$conn->close();

} } }$nivel = $_GET['grupo']; $page_id =$imagem = $_FILES['imagem']['name']; $image_tmp =

最佳答案

第一次、第二次是什么意思?您是否尝试创建另一个与刚刚创建的同名的表?您将收到表已存在的错误。

CREATE TABLE IF NOT EXISTS $criar

这明确告诉 MySql 不要创建该表(如果存在),因此如果您将相同的查询参数传递给 php,那么它将无法再次创建相同的表。

也许你可以将其更改为:

$page_id = $_GET['id'];
$criar = $tabela . $nivel . $page_id;

然后每次传递不同的 id 和/或不同的 tabela。

关于php - 首次使用后无法创建自动sql表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34913565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com