PHP的多个表

时间:2015-10-17 17:22:55

标签: php mysql pdo

我刚刚开始学习PHP,我在创建多个表时遇到了麻烦。 我创建了第一个,但第二个没有创建。

imageLoader.cancelDisplayTask
PS:任何帮助都会很棒。我坚持这个超过3个小时,我已经尝试寻找一些东西,但我找不到任何东西。

4 个答案:

答案 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

创建它后就不需要重新创建pdo来使用数据库

这是完整的代码

<?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;
?>

我删除了所有注释并添加了代码以删除数据库(如果存在),这样我就可以测试代码而无需每次需要重新测试时手动删除它