我对php很新...这可能是一个愚蠢的错误......但我不知道发生了什么。我正在尝试使用php在我的数据库中创建一个表。我想在用户名后命名表。我正在使用变量$tableusername
。这是我的代码
$sql="SELECT * FROM userdata WHERE username='$username'";
$result=mysql_query($sql);
while ($row = mysql_fetch_assoc($result))
{
$tableusername = $row["username"];
}
$create = "CREATE TABLE `".$tableusername."` ('
. ' `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, '
. ' `please` VARCHAR(50) NOT NULL, '
. ' `make` VARCHAR(50) NOT NULL, '
. ' `this` VARCHAR(50) NOT NULL, '
. ' `work` VARCHAR(50) NOT NULL'
. ' )'
. ' ENGINE = myisam;";
mysql_query($create)
?>
<html>
<head>
</head>
<body>
You have successfully signed up. <?php echo $tableusername ?>
</body>
</html>
所以 - 这会创建一个名为$tableusername
的表。变量不会延续。但是,当我echo $tableusername
时 - 变量会结转。我对此很陌生 - 所以任何帮助都会受到赞赏。
答案 0 :(得分:1)
您的字符串连接无效,请使用double quotes
代替single quotes
。
$create = "CREATE TABLE `".$tableusername."` ("
. " `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, "
. " `please` VARCHAR(50) NOT NULL, "
. " `make` VARCHAR(50) NOT NULL, "
. " `this` VARCHAR(50) NOT NULL, "
. " `work` VARCHAR(50) NOT NULL' "
. " )"
. " ENGINE = myisam;";
答案 1 :(得分:1)
在SQL查询之后添加它 - (这确实有助于加快错误纠正时间)
or die("A MySQL error has occurred.<br />Error: (" . mysql_errno() . ") " . mysql_error());
在您的实例中回声:
发生了MySQL错误。
错误:(1064)您的SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在''附近使用正确的语法。 'ID
INT NOT NULL AUTO_INCREMENT PRIMARY KEY,'。第1行的“please
VARCH”
这表明错误与“&amp; '有关。
将代码更改为包含单引号并执行后,现在没有回显。
<?php
$tableusername = "philip";
$create = "CREATE TABLE `".$tableusername."` ("
. " `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, "
. " `please` VARCHAR(50) NOT NULL, "
. " `make` VARCHAR(50) NOT NULL, "
. " `this` VARCHAR(50) NOT NULL, "
. " `work` VARCHAR(50) NOT NULL"
. " )"
. " ENGINE = myisam;";
mysql_query($create)or die("A MySQL error has occurred.<br />Error: (" . mysql_errno() . ") " . mysql_error());
?>
注意:使用PHP中嵌入的SQL时,请参阅MySQLi扩展名。 mysql_ *处于弃用过程中。
希望这有帮助。
答案 2 :(得分:1)
//使用变量
创建MySql表$tableName = "tb-"."$userEmail";
$tName="Beta";
$createTable = "CREATE TABLE ".$tName." ( UserName varchar(30), UserPassword varchar(30) )" ;
以上语法有效。将此示例应用于您的代码。 请查看串联中的一些错误
答案 3 :(得分:0)
使用heredoc:
$create = <<<SQL
CREATE TABLE `$tableusername` (
`ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`please` VARCHAR(50) NOT NULL,
`make` VARCHAR(50) NOT NULL,
`this` VARCHAR(50) NOT NULL,
`work` VARCHAR(50) NOT NULL
)
ENGINE = myisam;
SQL;
值得注意的是,您可以在heredoc中使用字符串插值,但您应该倾向于参数化查询。