【问题标题】:Dynamically insert data in a table name在表名中动态插入数据
【发布时间】:2013-05-30 06:06:29
【问题描述】:

我正在创建一个成绩系统,我需要一些帮助。

我正在创建一个注册表单,我已设法将用户详细信息插入到“用户”表中,但我还想将用户 ID 和用户名插入到组表中。

例如:

$sql = ("INSERT INTO `users`(`username`, `password`, `email`, `group`, `ip`, `signup`, `lastlogin`) VALUES ('$username','$email','$password','$group','$ip',now(),now())");
        $query = mysqli_query($db_conx, $sql); 
        $uid = mysqli_insert_id($db_conx);
        // Establish their row in the group table
        $sql = ("INSERT INTO '.$group.'(id, username) VALUES ('$uid','$username')");
        $query = mysqli_query($db_conx, $sql);

        exit();

我不确定如何将动态变量 ($group) 作为表名,然后将数据插入正确的组表中。

如果有人有任何建议或现在如何实现这一点,我们将不胜感激。

【问题讨论】:

  • Psssst...mysqli 是一个很好的步骤,但您必须使用准备好的语句:stackoverflow.com/questions/9629328/…
  • 我认为您应该先创建group 表,然后尝试将数据插入该表。
  • @Pier-LucGendreau 非常感谢!我现在将使用准备好的语句!对于任何想要它的人来说,一个好的视频是youtu.be/jSo0UDlATbw,它可以帮助我理解。
  • 没问题,很高兴看到你有兴趣学习!这里有一些关于“为什么”的阅读:stackoverflow.com/questions/60174/…

标签: php html mysql phpmyadmin


【解决方案1】:

这行得通。

mysql_query("INSERT INTO '.$group.'(id, username) VALUES ('$uid','$username')");

【讨论】:

    【解决方案2】:

    首先使用您想要的名称创建表

    $sql = ("CREATE TABLE `".$group."` (id,username);");
    $query = mysqli_query($db_conx, $sql);
    
    $sql = ("INSERT INTO `".$group."` (id, username) VALUES ('".$uid."','".$username."')");
    $query = mysqli_query($db_conx, $sql);
    

    希望对您有所帮助!

    【讨论】:

      【解决方案3】:
      "INSERT INTO '.$group.'(id, username) VALUES ('$uid','$username')"
      

      您用点和撇号围绕 $group - 撇号不会拆分字符串。

      "INSERT INTO `$group` (id, username) VALUES ('$uid','$username')"
      

      - 注意反引号。

      【讨论】:

        【解决方案4】:

        你的意思是这样的?

        "INSERT INTO '$table' (username,password) VALUES ('$username','$password')"
        

        不过,我建议您改用准备好的语句。 http://php.net/manual/en/pdo.prepared-statements.php

        【讨论】:

        • 那些应该是 $table 周围的反引号。我还假设 $group 是表的名称。
        • 事实上,完全不需要添加刻度。我只是用它们来更好地组织代码,所以它很容易理解。事实上,在他的例子中,$table 就是 $group,但这又是一个简单的例子,仅供参考。
        • 嘿,谢谢你的建议。我的问题是我有 $group = preg_replace('#[^a-z]#', '', $_POST['g']);但我需要 $group = preg_replace('#[^a-z0-9]#', '', $_POST['g']);它现在按预期工作。感谢您的帮助。
        猜你喜欢
        • 1970-01-01
        • 2011-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-18
        • 1970-01-01
        • 2013-06-03
        • 2018-06-04
        相关资源
        最近更新 更多