gpt4 book ai didi

php - 创建简单表时出现 mySQL 语法错误

转载 作者:太空宇宙 更新时间:2023-11-04 09:02:01 25 4
gpt4 key购买 nike

最近因为工作原因从linux换成了windows,之前mysql中php建表的方式好像不行了。

我首先尝试使用一些 php 变量创建表:

$tablename=$_POST['tablename'];
$fields=array('First Name', 'Last Name', 'Institution', 'Abbr.', 'City', 'Country', 'Phone', 'Email', 'Found by', 'Salesperson', 'Temp', 'Notes');

$sql ="CREATE TABLE $tablename
(
PID INT NOT NULL AUTO_INCREMENT,";
foreach ($fields as $field){$sql .= " $field CHAR(50),";}
$sql .= "PRIMARY KEY(PID))";

if (mysqli_query($con,$sql))
{echo "Table persons created successfully";}
else
{echo "Error creating table: " . mysqli_error($con);}

它返回了错误:“你的 SQL 语法有错误;请检查与你的 MySQL 服务器版本对应的手册,了解在 '( PID INT NOT NULL AUTO_INCREMENT, FirstName NOT NULL CHAR(50) 附近使用的正确语法, LastNam' 在第 2 行"

我认为空格可能有问题,所以我尝试手动输入表格数据:

$sql="CREATE TABLE $tablename
(
PID INT NOT NULL AUTO_INCREMENT,
FirstName NOT NULL CHAR(50),
LastName NOT NULL CHAR(50),
Institution NOT NULL CHAR(50),
Abbr NOT NULL CHAR(50),
City NOT NULL CHAR(50),
Country NOT NULL CHAR(50),
Phone NOT NULL CHAR(50),
Email NOT NULL CHAR(50),
Foundby NOT NULL CHAR(50),
Salesperson NOT NULL CHAR(50),
Temp NOT NULL CHAR(50),
Notes NOT NULL CHAR(50),
PRIMARY KEY(PID))";

Bu 返回相同的错误消息。我已经尽力根据以前的建议以各种方式修改它,但我被卡住了。与第二个示例格式几乎完全相同的表格在我的 Linux 机器上完美运行......

最佳答案

NOT NULL 应该跟在列类型之后

例如它应该是:

FirstName CHAR(50) NOT NULL

但是你把它写成:

FirstName NOT NULL CHAR(50)

这对我有用:

CREATE TABLE test_table
(
PID INT NOT NULL AUTO_INCREMENT,
FirstName CHAR(50) NOT NULL,
LastName CHAR(50) NOT NULL,
Institution CHAR(50) NOT NULL,
Abbr CHAR(50) NOT NULL,
City CHAR(50) NOT NULL,
Country CHAR(50) NOT NULL,
Phone CHAR(50) NOT NULL,
Email CHAR(50) NOT NULL,
Foundby CHAR(50) NOT NULL,
Salesperson CHAR(50) NOT NULL,
Temp CHAR(50) NOT NULL,
Notes CHAR(50) NOT NULL,
PRIMARY KEY(PID)
)

您的代码看起来可以很好地为 CREATE TABLE 生成 SQL,但是由于您的列名有空格,您需要使用反引号:

$tablename = 'persons';

$fields = array('First Name', 'Last Name', 'Institution', 'Abbr.', 'City', 'Country', 'Phone', 'Email', 'Found by', 'Salesperson', 'Temp', 'Notes');

$sql = "CREATE TABLE `".$tablename."`
(
`PID` INT NOT NULL AUTO_INCREMENT,";
foreach( $fields as $field )
{
$sql .= "
`" .$field ."` CHAR(50) NOT NULL,";
}
$sql .= "
PRIMARY KEY(PID)
)";

echo $sql;

将给予:

CREATE TABLE `persons`
(
`PID` INT NOT NULL AUTO_INCREMENT,
`First Name` CHAR(50) NOT NULL,
`Last Name` CHAR(50) NOT NULL,
`Institution` CHAR(50) NOT NULL,
`Abbr.` CHAR(50) NOT NULL,
`City` CHAR(50) NOT NULL,
`Country` CHAR(50) NOT NULL,
`Phone` CHAR(50) NOT NULL,
`Email` CHAR(50) NOT NULL,
`Found by` CHAR(50) NOT NULL,
`Salesperson` CHAR(50) NOT NULL,
`Temp` CHAR(50) NOT NULL,
`Notes` CHAR(50) NOT NULL,
PRIMARY KEY(PID)
)

上面的 SQL 创建的表没有任何问题。

关于php - 创建简单表时出现 mySQL 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19439155/

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