由于某种原因,我无法在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语句传递吗?
答案 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中,我发现我应该遵循以下语法规则来使我的查询一般工作:
"
标记。'
标记。