繁体   English   中英

在SQL语句中使用PHP变量?

[英]Using PHP variables inside SQL statements?

由于某种原因,我无法在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语句传递吗?

您粘贴的代码必须有效。 造成这种情况的可能原因是:

  • 您正在使用'SELECT * FROM $table_name' (单引号而不是双引号)
  • 您拼错了$table_name

尝试die("SELECT * FROM $table_name"); 然后您会确切地知道出了什么问题!

尝试

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

告诉我们这是什么意思。 理论上,$ table_name应该解析为字符串,因为它位于“”而不是“”中

我最近在SQL,PHP和MySQL方面的经验告诉我,无论是在PHP脚本内部还是在phpMyAdmin中通过SQL交互,我都应编写如下所示的SQL语句以使它们起作用。 否则我的查询不起作用。 我只是修改您上面发布的相同代码,以概括一下我的想法。 并给出有效的一般规则。

请注意,无论是表示自身的数据还是表示该数据的变量名称,任何值(记录值不是数据库名称,表名称或列名称)都应使用单引号引起来。 我的意思是'标志。 php语言中的可变范围也应该被视为一贯,这是另一回事。

function show_all_records($table_name) {

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

etc, etc...

}

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

  1. 双引号全部SQL查询。 我的意思是"商标”。
  2. 反引号所有数据库名称,表名称和列名称(列名称也可以不加引号)。 我的意思是`(在Macintosh上为Option +逗号)。
  3. 单引号所有值。 我的意思是'标记。
  4. 用与上述三个规则有关的变量相同的引号将变量引起来。

您的查询看起来不错。 无法看到为什么这行不通。 您是否已在代码中的其他位置使用mysql_connect()正确连接到数据库? 连接建立了吗? 您要连接的用户在您要访问的表上是否具有SELECT权限?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM