CREATE TABLE SI NOT EXISTS échoue avec la table existe déjà
J'ai le code suivant:
$db_host = 'localhost';
$db_port = '3306';
$db_username = 'root';
$db_password = 'root';
$db_primaryDatabase = 'dsl_ams';
//Connect to the database, using the predefined database variables in /assets/repository/mysql.php
$dbConnection = new mysqli($db_host, $db_username, $db_password, $db_primaryDatabase);
//If there are errors (if the no# of errors is > 1), print out the error and cancel loading the page via exit();
if (mysqli_connect_errno()) {
printf("Could not connect to MySQL databse: %s\n", mysqli_connect_error());
exit();
}
$queryCreateUsersTable = "CREATE TABLE IF NOT EXISTS `USERS` (
`ID` int(11) unsigned NOT NULL auto_increment,
`EMAIL` varchar(255) NOT NULL default '',
`PASSWORD` varchar(255) NOT NULL default '',
`PERMISSION_LEVEL` tinyint(1) unsigned NOT NULL default '1',
`APPLICATION_COMPLETED` boolean NOT NULL default '0',
`APPLICATION_IN_PROGRESS` boolean NOT NULL default '0',
PRIMARY KEY (`ID`)
)";
if(!$dbConnection->query($queryCreateUsersTable)){
echo "Table creation failed: (" . $dbConnection->errno . ") " . $dbConnection->error;
}
Sorties...
Table creation failed: (1050) Table '
dsl_ams.
UTILISATEURS' already exists
Ce que je ne comprends pas, c'est: n'est-ce pas IF NOT EXISTS
censé annuler l'exécution de la requête SQL si la table existe déjà? En d'autres termes, si la table existe, ne devrait-elle pas sortie que si la déclaration et de ne pas l'écho de rien du tout, et de ne pas tenter l'exécution de la requête?
Juste essayer de trouver la meilleure façon de "créer une table si elle n'existe pas" sans sortie de quelque chose à l'utilisateur.
source d'informationauteur Samuel Stiles
Vous devez vous connecter pour publier un commentaire.
Essayer cette
Cette fonction vérifie si tout est dans le tableau et si elle renvoie
NULL
vous n'avez pas de table.Aussi il n'y a pas de
BOOLEAN
le type de données dans mysql, vous devezINT
et il suffit de le mettre à 1 ou à 0 lors de l'insertion dans la table. Vous aussi n'avez pas besoin de guillemets simples autour de tout, juste au moment où vous êtes coder en dur les données dans la requête.Comme ça...
Espère que cette aide.
Pour éviter la sortie de quelque chose, le test de la table dans votre php avant d'essayer de créer la table. Par exemple,
Meilleurs vœux,
Que diriez-vous seulement montrer l'erreur si le numéro d'erreur n'est pas 1050?