php - 如何使用可变列名进行 SQL 查询?

标签 php mysql sql

我正在做这样的查询:

$b1 = $_REQUEST['code'].'A'; //letter 'A' is concatenated to $_REQUEST['code']
$a = $_REQUEST['num'];
echo $b1.$a;
$sql = "SELECT '".$b1."' FROM student_record1 WHERE id=".$a;
$result = mysql_query($sql);
if(!$result)
{
    echo '<p id="signup">Something went wrong.</p>';
}
else
{
    $str = $row[0]
    echo $str;
}

这里 $b1$a 从另一个页面获取值。第三行中的“echo ”给出了正确的结果。而且我在 SQL 中没有收到任何错误。相反,我没有从 SQL 查询中得到任何结果。我的意思是在最后一行回显。

最佳答案

不要这样做,它会破坏您的关系模型并且不安全。

而不是使用包含列 IDcolumnAcolumnBcolumnCcolumnD 的表格, columnE 并让用户选择 A/B/C/D/E 然后选择列,有一个包含三列 ID 的表, TYPE, column 并且 TYPEA/B/C/D/E。这也使得之后添加 F/G/H/I 而无需修改表格变得更加容易。

其次,使用额外的列方法,您不必像那样从输入值构建 SQL。您可以使用准备好的语句,并避免 SQL 注入(inject)。从未经过滤的字符串构建 SQL 是错误的,而且非常危险。它让您的网站遭到黑客攻击。

关于php - 如何使用可变列名进行 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7990665/

相关文章:

php - 如何在php中解析soap xml响应并从字符串中获取信息

javascript - 模态变暗整个屏幕,没有什么是可点击的

php - 给定一个值表,在 "deal"中找到最好的 "group buy"

sql - 如何按照用户的期望排序和显示字母和数字的混合列表?

Java 微秒格式化程序

php - 有电子邮件表格的背景图片吗?

mysql - 如何在一个查询中使用带有两个条件的mysql函数 "min()"

mysql - 如何检索过去 7 天的数据总和作为单独的总和

c# - 循环遍历 MySql reader 中的每个列名称和值?

sql - 我不确定在SQL中声明这些变量时出了什么问题