在SQL语句中使用PHP变量?

时间:2010-04-01 02:19:28

标签: php mysql

由于某种原因,我无法在mysql语句中传递var。我有一个可以用于多个表的函数。因此,我没有重复代码,而是想要更改从中选择的表,

function show_all_records($table_name) {

     mysql_query("SELECT * FROM $table_name");

etc, etc...

}

并调用我使用的功能 show_all_records("some_table") 要么 show_all_records("some_other_table")

取决于我当前要从哪个表中选择。但它不起作用,这是因为变量不能通过mysql语句传递吗?

4 个答案:

答案 0 :(得分:4)

您粘贴的代码必须有效。可能的原因不是:

  • 您使用的是'SELECT * FROM $table_name'(单引号而非双引号)
  • 你拼错了$table_name

试试die("SELECT * FROM $table_name");,你会看到到底出了什么问题!

答案 1 :(得分:2)

尝试

$results = mysql_query("SELECT * FROM $table_name") or die(mysql_error());

告诉我们它说的是什么。理论上,$ table_name应该被解析为一个字符串,因为它在“”而不是“

答案 2 :(得分:0)

您的查询看起来很好。看不出为什么那样行不通。您是否已使用代码中其他位置的mysql_connect()正确连接到数据库?连接是否已建立?您要连接的用户是否对您尝试访问的表具有SELECT权限?

答案 3 :(得分:0)

我最近使用SQL,PHP和MySQL的经验告诉我,我应该编写如下的SQL语句来使它们工作,无论是在PHP脚本中还是在phpMyAdmin中的SQL交互中。否则我的查询不起作用。 我只是修改你在上面发布的相同代码,以概括我想出的内容。并提供有效的一般规则。

要注意任何值(记录值不是db,表或列名称)周围的单引号,无论表示自身的数据还是变量名称表示该数据。我的意思是'标记。语言php中的变量范围也应该被视为永远,这是另一回事。

function show_all_records($table_name) {

     mysql_query("SELECT `Username` FROM `$table_name` WHERE `Username` = 'edwin'");

etc, etc...

}

在SQL中,我发现我应该遵循以下语法规则来使我的查询一般工作:

  1. 双引用所有SQL查询。我的意思是"标记。
  2. 反引用所有数据库名称和表名称以及列名称(列名也可以不加引号)。我的意思是`(Macintosh上的选项+逗号)。
  3. 单引号所有值。我的意思是'标记。
  4. 使用与上述三条规则的值相同的引号引用变量。