gpt4 book ai didi

PHP/MYSQL 泛化 SELECT 子句

转载 作者:行者123 更新时间:2023-11-29 13:53:33 27 4
gpt4 key购买 nike

我正在尝试使用复选框概括选择查询,您将看到的变量选择是从前端文件发布的,该文件使用复选框在后端创建数组。然后,该数组用于 select 语句的 SELECT 子句。目前,表头输出正确的 header ,但数据也输出相同的数据。谁能帮我找出我的错误。

<?php
session_start(); //Begins a session
?>

<html> <head> <title> Genre selection back end </title>
</head>
<body>
<?php
$genre_value = $_POST['genrelist'];

$choice = $_POST['choice'];

$numvalues = count($choice);
echo '<h2> Table shows some data </h2>';
echo "<table border = '1'>";
echo '<tr>';

for($i= 0; $i < $numvalues; $i ++)
{
echo "<th>" .$choice[$i]. "</th>";
$choicearray = $choicearray . ", " . $choice[$i];
}
echo '</tr>';

$select = substr($choicearray, 1);
include '../functions/connect.php';
$query = "SELECT '$select' FROM film WHERE Genre = '".$genre_value."'";
$result = mysql_query($query) or die ("Invalid query");

while($row = mysql_fetch_array($result))
{
echo "<tr>";
for($i = 0; $i < $numvalues; $i ++)
{
echo "<td>" .$row[$i]. "</td>";
}
echo "</tr>";
}
echo "</table>";
mysql_close($con);
?>
</body>
</html>

最佳答案

您在 select 语句中使用单引号。这使得 MySQL 选择那些确切的字符串值。

删除单引号。将您的查询更改为

$query = "SELECT $select FROM film WHERE Genre = '".$genre_value."'";

此外,请不要将此代码用于除概念证明以外的任何用途。您绝对不能直接信任查询中的 POSTGET 数据。确保首先转义每个值。

我建议你将 for 循环更改为如下所示:

$choicearray = array();
for($i= 0; $i < $numvalues; $i ++)
{
echo "<th>" .$choice[$i]. "</th>";
$choicearray[] = mysql_escape_string(trim($choice[$i]));
}
echo '</tr>';
$choicearray = implode(',', $choicearray);

这将为您提供相同的结果,但会转义沿途的所有项目。

关于PHP/MYSQL 泛化 SELECT 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16269114/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com