尝试使用Php从数据库读取和创建表

问题描述 投票:1回答:2

我试图这样做,以便我的代码将检查数据库有多少表然后增加它然后添加一个表到数据库,但是,我得到以下错误?任何帮助将非常感激。

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

// Create connection
$link = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($link->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$result = mysqli_query($link, "show tables"); 
(int)$num = 0;
while($table = mysqli_fetch_array($result)) { 
  $num++;
    echo($table[0] . "<BR>");
}
$num += 1;
$sql = "CREATE TABLE {$num} (
  id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  firstname VARCHAR(30) NOT NULL,
  lastname VARCHAR(30) NOT NULL,
  email VARCHAR(50)
)";
if(!mysqli_query($link, $sql)){
  echo("Error description: " . mysqli_error($link));    }

输出错误

错误描述:SQL语法中有错误;检查与您的MariaDB服务器版本对应的手册,以便在第1行附近使用'5(id INT(6)UNSIGNED AUTO_INCREMENT PRIMARY KEY,firstname VARCHAR(30)N'附近使用正确的语法

php sql database
2个回答
0
投票

输入一个默认的表名,然后输入这样的num

 CREATE TABLE table{$num} (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  firstname VARCHAR(30) NOT NULL,
  lastname VARCHAR(30) NOT NULL,
  email VARCHAR(50)
  )";

您不能将数字作为表名


0
投票

标识符可以以数字开头,但除非引用可能不仅仅由数字组成。

资料来源:https://dev.mysql.com/doc/refman/5.7/en/identifiers.html

为了使用tablename的数字,你应该将{$ num}变量包装在单引号内,比如

$sql = "CREATE TABLE `{$num}`(
  id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  firstname VARCHAR(30) NOT NULL,
  lastname VARCHAR(30) NOT NULL,
  email VARCHAR(50)
)";
© www.soinside.com 2019 - 2024. All rights reserved.