gpt4 book ai didi

php - Mysql根据id选择列数组

转载 作者:行者123 更新时间:2023-11-30 22:50:37 25 4
gpt4 key购买 nike

我正在尝试根据用户复选框获取 mysql 列。这意味着如果用户选择一个复选框(例如,value2),则仅从表中检索名为 colum 的 value2。有什么方法可以在 mysql select 命令中显式指定以检索所有用户检查的值(可能来自数组)。

<form action="yyy.php" method="post">
<input type="checkbox" name="check_list[]" value="value 1">
<input type="checkbox" name="check_list[]" value="value 2">
<input type="checkbox" name="check_list[]" value="value 3">
<input type="submit" />
</form>

我尝试在数组中接收值并像下面这样使用,但它不起作用

<?php
if(!empty($data = $_POST['check_list']))
//cut some parts and simplified to focus on my problem
$sql = "SELECT $data FROM mydata WHERE id='$id'";
?>

在一些帖子中,我注意到使用数组作为 $id like here .其他方法可能是循环选择语句,但我不确定。

我不是这个领域的专家,想知道任何解决方案[更好]的解决方案。

最佳答案

如果您的列名与您的复选框值相同,通常您会返回一个数组。

<input type="checkbox" name="check_list[]" value="col1" />Column 1 <br/>
<input type="checkbox" name="check_list[]" value="col2" />Column 2 <br/>
<input type="checkbox" name="check_list[]" value="col3" />Column 3 <br/>

$_POST中:

Array
(
[0] => col1
[1] => col2
[2] => col3
)

一种方法是用逗号内爆/粘合它来完成您的查询语句并获得明确选择的列名。

SELECT col1, col2, col3 FROM table_name

您还可以将白名单添加到组合中。这是想法。

super 粗略的例子:

if(!empty($_POST['check_list'])) {
$check_list = $_POST['check_list'];
$predefined_columns = array('col1', 'col2', 'col3'); // for whitelisting

$filtered_columns = implode(', ', array_intersect($predefined_columns, $check_list));
$sql = "SELECT $filtered_columns FROM table_name WHERE id = :id";

$db = new PDO('mysql:host=localhost;dbname=database_name', 'username', 'password');

$select = $db->prepare($sql);
$select->bindParam(':id', $id);
$select->execute();

while($row = $select->fetch(PDO::FETCH_ASSOC)) {
print_r($row);
}
}

关于php - Mysql根据id选择列数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28290598/

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