我刚刚开始学习PHP,我在创建多个表时遇到了麻烦。 我创建了第一个,但第二个没有创建。
imageLoader.cancelDisplayTask
PS:任何帮助都会很棒。我坚持这个超过3个小时,我已经尝试寻找一些东西,但我找不到任何东西。
答案 0 :(得分:0)
尝试删除最后一个comma
:
//Criar Tabela Turma
$sql="CREATE TABLE Turma(
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
COD_TURMA INTEGER(2) NOT NULL,
ANO INTEGER(2) NOT NULL,
Designação VARCHAR(1) NOT NULL,
N_Alunos INTEGER(2) NOT NULL
)";
$conexao->exec($sql);
始终在数据库中测试您的查询。如果没问题,请在代码中使用它。
答案 1 :(得分:0)
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 7
正确的查询是
CREATE TABLE Turma(
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
COD_TURMA INTEGER(2) NOT NULL,
ANO INTEGER(2) NOT NULL,
Designação VARCHAR(1) NOT NULL,
N_Alunos INTEGER(2) NOT NULL
)
注意查询的最后一行“,”
答案 2 :(得分:0)
您忘记为第二次连接设置PDO :: ERRMODE_EXCEPTION。
我建议你只使用单一连接。
$nomeServidor="localhost";
$nomeUtilizador="root";
$password="";
$nomeBD="escola";
$conexao=new PDO("mysql:host=$nomeServidor", $nomeUtilizador, $password);
$conexao->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql="Create Database $nomeBD";
$conexao->exec($sql);
echo "Base de Dados criada com sucesso";
$conexao->query("use $nomeBD");
然后继续创建表格。它将导致的任何错误,将向您透露。
答案 3 :(得分:0)
最后一个查询首先有两个错误,最后一个逗号
第二列Designação
列有非英文字符
你可以像这样使用英文名称
CREATE TABLE Turma(
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
COD_TURMA INTEGER(2) NOT NULL,
ANO INTEGER(2) NOT NULL,
test VARCHAR(1) NOT NULL,
N_Alunos INTEGER(2) NOT NULL
)
或在创建pdo后添加此行
$conexao->query("SET SESSION CHARACTER_SET_CLIENT =latin1;");
您也不需要在主机的第一个连接中选择数据库,并且您只需使用use database_name
这是完整的代码
<?php
$nomeServidor="localhost";
$nomeUtilizador="root";
$password="";
$nomeBD="escola";
$conexao=new PDO("mysql:host=$nomeServidor", $nomeUtilizador, $password);
$conexao->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conexao->query("SET SESSION CHARACTER_SET_CLIENT =latin1;");
try{
//remove the next two lines if you don't wanna to drop the database it's just for test purpose
$sql="DROP DATABASE IF EXISTS $nomeBD";
$conexao->exec($sql);
$sql="Create Database $nomeBD";
$conexao->exec($sql);
echo "Base de Dados criada com sucesso<br/>";
$sql="use $nomeBD";
$conexao->exec($sql);
}
catch(PDOException $e){
echo $sql."-"-$e->getMessage();
}
$sql="CREATE TABLE Alunos(
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
Numero INTEGER(5) NOT NULL,
Nome VARCHAR(30) NOT NULL,
Morada VARCHAR(30) NOT NULL,
Telefone INTEGER(9) NOT NULL,
IDADE INTEGER(2) NOT NULL,
COD_TURMA INTEGER(2) NOT NULL
)";
$conexao->exec($sql);
echo "Tabela Alunos Criada com Sucesso<br>";
$sql="CREATE TABLE Turma(
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
COD_TURMA INTEGER(2) NOT NULL,
ANO INTEGER(2) NOT NULL,
Designação VARCHAR(1) NOT NULL,
N_Alunos INTEGER(2) NOT NULL
)";
$conexao->exec($sql);
echo "Tabela Turma Criada com Sucesso";
$conexao=null;
?>
我删除了所有注释并添加了代码以删除数据库(如果存在),这样我就可以测试代码而无需每次需要重新测试时手动删除它