当前位置: 首页 > 面试题库 >

使用php变量创建mysql表不起作用

罗宪
2023-03-14
问题内容

我是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- 当我-变量结转。我对此很陌生-
因此,感谢您的帮助。


问题答案:

在您的SQL查询之后添加它-(它确实可以帮助并加快错误纠正时间)

or die("A MySQL error has occurred.<br />Error: (" . mysql_errno() . ") " . mysql_error());

回声 这在您的实例:

发生MySQL错误。错误:(1064)您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以在’‘附近使用正确的语法。’ IDINT
NOT NULL AUTO_INCREMENT主键,’。please第1行的“ VARCH”

然后,这向我表明错误与 ”有关

代码更改为包含单引号并执行后,现在没有回显了。

   <?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_
*正在弃用过程中。

希望这可以帮助。



 类似资料:
  • 问题内容: 我在用PHP变量创建SQL表时遇到了麻烦。 假设$ tbl_date =“ data”; 它不会创建表。 问题答案: 您的表名不在引号中,因此似乎无法正常工作。试试这个: 字段名称也是如此。 也可以尝试一下,这样人类更容易阅读: 请注意不同类型的引号: -在PHP中用于构建某些字符串(例如SQL查询)的单引号和双引号 -专门用作表名和列名的SQL查询一部分的反引号

  • 问题内容: 我有一个html表,可将mySQL数据库表中的所有内容加载。我有与该mySQL表的列相关的下拉菜单-当用户选择下拉菜单之一时,它将使用AJAX查询数据库。 我需要弄清楚如何动态构建查询,因为有时下拉列表将为空(即,它们不想按该列进行过滤)。 做这个的最好方式是什么? 目前我有这样的事情: 您可以想象这是行不通的,因为如果这些字段中的任何一个为空,查询都会失败(或者不返回任何内容)。 显

  • 我试图将变量插入数据库中的一个表中,由于某种原因,insert查询没有将我的值插入到所述数据库中。我已经测试了“test_input”函数,它工作得很好,我知道连接正在工作,因为我稍后在代码中使用的一个SELECT查询正在工作。我也知道输入是在$_PostSuperGlobal中,所以我认为这可能与insert查询有关,排除了其他可能性。这个查询有什么问题吗?以下是我的php代码: 这是我的HTM

  • 问题内容: 我想插入变量,并到我的桌前。现在,从我可以告诉我的所有信息中,我应该做的就是,下面是我所要做的,但是这根本不会在我的表中插入任何内容。如果我对应该写的内容进行硬编码(使用它将示例写到表中,那么到目前为止我的连接和语法正确)。任何帮助将不胜感激! 我也尝试过这个: 和: 问题答案: 您需要将SQL语句和参数作为单独的参数传递: 或使用可变参数语法(splat ) : 您的版本尝试传入包含

  • 问题内容: 我正在尝试使用PDO在PHP中运行查询。该查询在顶部具有一些变量来确定排名,除了在$ sql中使用SET @var时,它返回一个空行集。但是,如果删除有问题的SQL,它会返回正常值。 我不想在我的脚本中返回@ prev_value,@ rank_count或@rank_increasing,仅返回它在SELECT中创建的排名。 你能告诉我我做错了吗? 谢谢 问题答案: 在此处找到解决方

  • 问题内容: 我究竟做错了什么?为什么$ path在函数外部正确打印,但是在函数内部无法访问? 问题答案: 因为它没有在函数中定义。 有几种方法可以解决此问题: 1)使用亚历克斯所说的话,告诉函数它是一个全局变量: 2)将其定义为常量: 3)如果特定于该函数,则将其传递给该函数: 根据功能的实际工作原理,其中之一会起作用。