PHP Mysql - 在 Select 语句中使用变量作为列名

标签 php mysql sql-server database

我的表格中有月份名称作为列名称,例如 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/

相关文章:

php - Paypal 按钮不工作 PHP

php - 将 blob 图像检索到 html php

c# - 带有链接子报表的 Crystal 报表仅适用于报表预览

mysql - 使用 SQL server openquery 从 MySql Server 中提取数据

sql - 如何在 SQL Server 中使用 CONTAINSTABLE 获得 'combined' OR 短语排名?

PHPExcel - 如何使用 phpexcel 库更改图表的颜色、边框和背景?

javascript - 取消选中复选框时 AJAX 不起作用

php - 使用 MySQL 连接 2 个表

php - 在函数中使用 PDO 返回一些值

php - Doctrine ORM 2 选择负数