【问题标题】:PHP : Using a variable to hold a table name, and using that variable in queries [duplicate]PHP:使用变量来保存表名,并在查询中使用该变量[重复]
【发布时间】:2012-11-19 08:23:30
【问题描述】:

我目前正在学习 PHP,并且正在编写注册表单。 在我的代码中某处我有这些语句

$query = "SELECT `stud_no` FROM `tb_registered_users` WHERE `stud_no`='$studno'";

$query = "INSERT INTO `tb_registered_users`
VALUES ('".$studno."','".$firstname."','".$lastname."')";

但是我想声明这个变量并在上面提到的查询中使用它

$mysql_tb = 'tb_registered_users';

那么正确的语法是什么?

【问题讨论】:

    标签: php mysql database variables


    【解决方案1】:
    <?php
    $mysql_tb = 'tb_registered_users';
    $query = "SELECT `stud_no` FROM `{$mysql_tb}` WHERE `stud_no`='$studno'";
    $query = "INSERT INTO `{$mysql_tb}` VALUES ('".$studno."','".$firstname."','".$lastname."')";
    

    【讨论】:

    • 这个大括号语法改变了我的生活,不知道这是否可行,谢谢!
    • @Yueyu你能解释一下大括号的作用是什么
    【解决方案2】:
    $query = "INSERT INTO `" . $mysql_tb . "`
    VALUES ('".$studno."','".$firstname."','".$lastname."')";
    

    【讨论】:

      【解决方案3】:
      $mysql_tb = 'tb_registered_users';
      
      $query = "SELECT `stud_no` FROM `".$mysql_tb."` WHERE `stud_no`='$studno'";
      

      【讨论】:

        【解决方案4】:

        你可以这样做

        $query = "SELECT `stud_no` FROM " . $mysql_tb . " WHERE `stud_no`='$studno'";
        

        但我建议调查 PDO (http://www.php.net/manual/en/book.pdo.php && http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/)。

        【讨论】:

          【解决方案5】:
          $query = "SELECT `stud_no` FROM `".$mysql_tb."` WHERE `stud_no`='$studno'";
          

          $query = "INSERT INTO `".$mysql_tb."` VALUES ('".$studno."','".$firstname."','".$lastname."')";
          

          您可能还想考虑使用 PDO 之类的东西,这将允许您使用命名参数并避免 SQL 注入。

          【讨论】:

            【解决方案6】:

            如果使用双引号也对我有用:

            $newDataInput = "INSERT INTO $mysql_tb (Date,Time) VALUES ('$date','$time')";
            

            【讨论】:

              【解决方案7】:

              顺便说一句,你也可以使用 sprintf 函数来做同样的事情,如下所示

              (PHP 4、PHP 5、PHP 7) sprintf — 返回一个格式化的字符串

              $mysql_tb = 'tb_registered_users';
              $query1 = sprintf("SELECT `stud_no` FROM `%s` WHERE `stud_no`='$studno'",$mysql_tb);
              $query2 = sprintf("INSERT INTO `%s` VALUES ('".$studno."','".$firstname."','".$lastname."')",$mysql_tb);
              

              只需将 %s 放在要替换值的位置,然后使用第二个参数作为变量,如下所示。它与 c 语言和 c++ 中的函数一样工作。您也可以用多个参数替换多个值。这是php手册帮助

              https://www.php.net/manual/en/function.sprintf.php 希望有帮助

              【讨论】:

                猜你喜欢
                • 2013-08-13
                • 2016-08-27
                • 1970-01-01
                • 2020-09-22
                • 2021-01-09
                • 2021-10-27
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多