我正在做这样的查询:
$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 查询中得到任何结果。我的意思是在最后一行回显。
最佳答案
不要这样做,它会破坏您的关系模型并且不安全。
而不是使用包含列 ID
、columnA
、columnB
、columnC
、columnD 的表格
, columnE
并让用户选择 A/B/C/D/E
然后选择列,有一个包含三列 ID 的表
, TYPE
, column
并且 TYPE
为 A/B/C/D/E
。这也使得之后添加 F/G/H/I
而无需修改表格变得更加容易。
其次,使用额外的列方法,您不必像那样从输入值构建 SQL。您可以使用准备好的语句,并避免 SQL 注入(inject)。从未经过滤的字符串构建 SQL 是错误的,而且非常危险。它会让您的网站遭到黑客攻击。
关于php - 如何使用可变列名进行 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7990665/