我的表格中有月份名称作为列名称,例如 jan、feb、march 等。
在我的表单中,用户需要从下拉列表中选择一个月,我将选择用户的选择
作为 $month_name。
我想查看 $month_name 中不为 0.00 的数据。
当我回显 $month_name 时,我得到:jan 或 feb 等。
我在 select 语句中使用了 $month_name 但不起作用:
第一次尝试不起作用:
$sql = "SELECT * FROM bookoff_monthly WHERE '.$month_name.' <> 0.00 AND year='$year' ";
第二次尝试不起作用:
$sql = "SELECT * FROM bookoff_monthly WHERE $month_name <> 0.00 AND year='$year' ";
** 但是以下方法有效,但这不是我想要的:
$sql = "SELECT * FROM bookoff_monthly WHERE jan <> 0.00 AND year='$year' ";
最佳答案
这是我认为正确转义的内容:
$sql = "SELECT * FROM bookoff_monthly WHERE `".$month_name."` <> 0.00 AND year='".$year."' ";
请注意,在 $month_name
周围,语句中有反引号,然后是双引号(因为整个查询都被它们包围),然后是 PHP 连接 (.
) 。您最好将其视为字符串+变量+字符串...
而不是字符串中的变量。与 $year 变量相同。
在你的第一个语句中,你已经接近了,但你使用单引号来打破字符串,但如果字符串包含在双引号中,你就不能这样做。
$var = "is a";
echo("This ".$var." string 'with quoted text'"); // This is a string 'with quoted text'
echo("This ".$var." string \"with quoted text\""); // This is a string "with quoted text"
echo('This '.$var.' string "with quoted text"'); // This is a string "with quoted text"
echo('This '.$var.' string \'with quoted text\''); // This is a string 'with quoted text'
假设您的变量格式正确,那么这应该可以工作。
编辑:正如 VMai 所说,因为您正在处理 3 个字母的月份名称,所以您将不可避免地在此查询中使用“DEC”或“dec”,这是 MySQL 中的保留字,因此您必须 使用反引号转义名称,否则查询将被误解。
关于PHP Mysql - 在 Select 语句中使用变量作为列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25689663/