基于 PHP 单选按钮的 MYSQL 查询语句
Posted
技术标签:
【中文标题】基于 PHP 单选按钮的 MYSQL 查询语句【英文标题】:MYSQL Query statements based on PHP radio buttons 【发布时间】:2017-10-01 10:08:51 【问题描述】:我有一组单选按钮:
<div id="navbarval">
<input type="radio" name="selectionval" onchange="this.form.submit();" value="users" checked> CATEGORY USERS
<input type="radio" name="selectionval" onchange="this.form.submit();" value="avgspends"> AVERAGE SPENDS
<input type="radio" name="selectionval" onchange="this.form.submit();" value="totalspends" > TOTAL SPENDS
<input type="radio" name="selectionval" onchange="this.form.submit();" value="percapita" > PER CAPITA SPENDS
</div>
根据用户选择,我正在尝试获取 mysql 数据。到目前为止,我的 php 代码如下:
$query = if ($_POST['selectionval'] == "users")
"SELECT users,sum(categ) as categ FROM cktable group by users";
我收到以下错误:
解析错误:第 210 行 /Users/dynamo/Sites/newvan/accessories.php 中的解析错误
我想用 else if 扩展它,让所有其他单选按钮改变 mysql 选择查询,因此需要 if 条件。
我尝试直接传递 select 语句:
$query = "SELECT users,sum(categ) as categ FROM cktable group by users";
这运行没有任何错误。
有什么想法吗?
【问题讨论】:
在if
内赋值,或者使用三进制。
if (isset($_POST['selectionval']) && $_POST['selectionval'] == "users") // run the query
$categ
分配/声明了什么以及在哪里?
@RamRaider 是的;该语法不起作用as $categ
;很奇怪。这个问题开始变得不清楚了。
牛仔等等…… <div id="navbarval" method="POST">
?? - div 没有方法,表单有。我认为您正在为此使用 ajax,如果有的话。
【参考方案1】:
您使用了错误的语法。如下更改您的代码。
if (isset($_POST['selectionval']) && $_POST['selectionval'] == "users")
$query = "SELECT users,sum(categ) as $categ FROM cktable group by users";
或者使用ternary operator:
$query = (isset($_POST['selectionval']) && $_POST['selectionval'] == "users") ? "SELECT users,sum(categ) as $categ FROM cktable group by users" : '';
【讨论】:
第一个在初始页面加载时失败。最好使用isset()
。此评论基于初始帖子***.com/revisions/43762506/1【参考方案2】:
尝试改变:
$query = if ($_POST['selectionval'] == "users")
"SELECT users,sum(categ) as $categ FROM cktable group by users";
到
if ($_POST['selectionval'] == "users")
$query = "SELECT users,sum(categ) as $categ FROM cktable group by users";
【讨论】:
第一个在初始页面加载时失败。最好使用isset()
。【参考方案3】:
要扩展解决方案,您可以使用基于单选值的查询映射。
例如:
$queries = array(
'value1' => 'SELECT ...',
'value2' => 'SELECT ...',
'valueN' => 'SELECT ...'
);
$radio_value = $_POST['radio_name'];
if (isset($queries[$radio_value]))
$query = $queries[$radio_value];
【讨论】:
【参考方案4】:在我看来,switch
语句似乎比众多 if
,elseif
,else
语句更易于阅读。此外,通过检查 Request Method
是否设置,在提交表单之前不会执行 switch 语句。
<?php
if( $_SERVER['REQUEST_METHOD']=='POST' && !empty( $_POST['selectionval'] ) )
$sql=false;
$categ='---what is $categ---';
$selection=filter_input( INPUT_POST, 'selectionval', FILTER_SANITIZE_STRING );
switch( strtolower( $selection ) )
case 'users':
$sql="select `users`, sum( `categ` ) as '$categ' from `cktable` group by `users`";
break;
case 'avgspends':
$sql="select.....";
break;
case 'totalspends':
$sql="select.....";
break;
case 'percapita':
$sql="select.....";
break;
if( $sql )
/* execute query */
#$db->query( $sql );
?>
【讨论】:
最好再看看<div id="navbarval" method="POST">
;-) as per my comment
我一开始都没有,后来又看了几眼就注意到了lol以上是关于基于 PHP 单选按钮的 MYSQL 查询语句的主要内容,如果未能解决你的问题,请参考以下文章
基于PHP+mysql的考试系统自动组卷,自动批卷,自动评分,单选,多选,判断