gpt4 book ai didi

php - 由于(未知)原因,未显示通过查询从数据库中检索到的多个复选框值

转载 作者:行者123 更新时间:2023-11-30 22:57:32 24 4
gpt4 key购买 nike

所以最近我一直在研究一种通过复选框选择从数据库中发布值的方法。感谢之前的问题:How to use checkboxes to retrieve specific data in a database ,我设法让它工作了!

虽然我让它工作了,但我想让我的查询在选中多个复选框时更加有效,而不是为每个复选框可能性编写查询 if/else。

通过对堆栈溢出的一些研究,特别是这个主题:Run a query based on multiple checkboxes ,我为自己的项目创建了代码。虽然,出于某种原因它只是不会正确输出数据,它甚至根本不会输出任何东西。

所以我查看了我的代码,看看哪里出了问题。我传入了几个 echo 来获取数组信息等,但除了我正在回显查询结果(返回 0)的最后一个 echo 之外,一切似乎都还不错。

所以我现在有点卡住了,因为我不知道出了什么问题。注意:它适用于 wordpress,因此解释了查询中的微小差异。*

代码如下:显示复选框的 HTML 代码

<form method="post">
<div id="list1" class="dropdown-check-list">
<span class="anchor">Select Authors</span>
<ul class="items">
<li><input type="checkbox" name="columns[]" value="Barry" />Barry</li>
<li><input type="checkbox" name="columns[]" value="Henk" />Henk</li>
<li><input type="checkbox" name="columns[]" value="Nicolas" />Nicolas</li>
</ul>
</div>
<input type="submit" name="go" value="Submit"/>
</form>

ID 用于 Jquery 下拉效果。

PHP代码如下:

*下面的代码定义了在表格中显示/回显的列标题

$column_names = array(
"Authorss" => "Authorss",
"Research_Source" => "Research_Source",
"Research_Title" => "Research_Title"
);
$sql_columns = array();
foreach($column_names as $i) {
$sql_columns[] = $column_names[$i];
}

下一行代码检查选中的复选框值并查询选定的值:

if(!empty($_POST['columns'])) { // empty() checks if the value is set before checking if it's empty.

foreach($_POST['columns'] as $key=>$value){
// Runs mysql_real_escape_string() on every value encountered.
$clean_criteria = array_map('mysql_real_escape_string', $_REQUEST['columns']);

// Convert the array into a string.
$criteria = implode("','", $clean_criteria);


}
$tmp = $wpdb->get_results("
SELECT"
.implode(",", $sql_columns)."

FROM
wp_participants_database

WHERE
authorss IN ($criteria)

ORDER BY
authorss ASC
");
}

如果选择非,查询将选择所有可能的结果(这仍然必须创建,因为我希望特定的选择查询首先工作):

else {
echo 'still needs to be edit to show everything here';
//$tmp = $wpdb->get_results( "SELECT ".implode(",", $sql_columns)." FROM wp_participants_database;");
}

现在是查询数据显示/放入表格的部分:

echo "<table>
<tr>";

foreach($column_names as $k => $v) {
echo "<th>$v</th>";
}
echo "</tr>";

if(count($tmp)>0){
for($i=0;$i<count($tmp);$i++){
echo "<tr>";
foreach($tmp[$i] as $key=>$value){
echo "<td>" . $value . "</td>";
}
echo "</tr>";
}
}
echo '</table>';

*****更新*****自己修好了!首先我删除了:

 $column_names = array(
"Authorss" => "Authorss",
"Research_Source" => "Research_Source",
"Research_Title" => "Research_Title"
);
$sql_columns = array();
foreach($column_names as $i) {
$sql_columns[] = $column_names[$i];
}

上面的代码是不必要的,因为列都是预设的,所以我只是通过键入它们来回应它们。

问题如下:

$tmp = $wpdb->get_results("
SELECT"
.implode(",", $sql_columns)."

FROM
wp_participants_database

WHERE
authorss IN ($criteria)

ORDER BY
authorss ASC
");

$criteria 变量应该为 IN 提供一个字符串,尽管在我的代码中它被解析为文字(因此没有字符串)。这看起来很简单,我只需要添加 '' 这样它就会被解析为一个字符串。结果:WHERE authorss IN ('$criteria')

最佳答案

 <div>
<?php
$corpServicesValue = $row['corp_services'];
$value= explode(",",$corpServicesValue);

if(in_array("1",$value))echo '<input type="checkbox" name="corporationServices[]" value="1" checked >Management<br>';

?>
</div>

关于php - 由于(未知)原因,未显示通过查询从数据库中检索到的多个复选框值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25621947/

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