Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql select语句中的特殊关键字_Php_Mysql - Fatal编程技术网

Php mysql select语句中的特殊关键字

Php mysql select语句中的特殊关键字,php,mysql,Php,Mysql,考虑以下脚本: SELECT * FROM TABLE1 WHERE COLUMN1='$exb'; $exb是一个PHP变量,由HTML选择列表提供,有3个值:0,1,2。值1和2对应于第1列的值。如果选择值0,我希望包括COLUMN1的所有值。有没有办法在不改变脚本的情况下实现上述功能?换句话说,如果用户从HTML选择列表中选择0,是否有任何关键字要分配给$exb,这将迫使脚本选择表TABLE1的所有行? 谢谢有点不清楚,但我想你是在问,是否有一个特殊的子句可以添加到where子句中,以

考虑以下脚本:

SELECT * FROM TABLE1  WHERE COLUMN1='$exb';
$exb是一个PHP变量,由HTML选择列表提供,有3个值:0,1,2。值1和2对应于第1列的值。如果选择值0,我希望包括COLUMN1的所有值。有没有办法在不改变脚本的情况下实现上述功能?换句话说,如果用户从HTML选择列表中选择0,是否有任何关键字要分配给$exb,这将迫使脚本选择表TABLE1的所有行?
谢谢

有点不清楚,但我想你是在问,是否有一个特殊的子句可以添加到where子句中,以返回数据库中的每一行,而不是where子句中匹配的特定条件

您可以通过说col1=col1来加入一个假装where子句,这实际上是一个伪造的但有效的语法,如下所示:

SELECT * FROM TABLE1  WHERE COLUMN1=column1;
尽管它必须不带引号才能选择表中的每一行

然而,在php中,在变量周围加引号是非常简单的


话虽如此,如果选择的值为0,那么完全省略where子句不是更容易吗?

我认为仅使用MySql查询无法做到这一点。您需要使用php和ifelse语句,以便在执行查询之前检查$exb值。例如:

if($exb == "0")
    $query = "SELECT * FROM TABLE1";
else
    $query = "SELECT * FROM TABLE1  WHERE COLUMN1='$exb'";

为此,您需要构建一个动态查询

$query = "SELECT * FROM TABLE1";
$exb = isset($_GET['exb']) ? $_GET['exb'] : 0;
$goodParam = array(0,1,2);//array of allowed values
if($exb>0){
    if (in_array($exb, $goodParam)) {
    $query .= " WHERE COLUMN1 = '$exb'"; 
    }
}
echo $query;

你在问什么?不要试图在SQL中包装条件,根据输入过滤器在PHP中相应地修改SQL语句。如果你不理解,你如何进行向下投票???为什么进行向下投票?语法是有效的,并回答了问题,因为它是书面的-我指出了更好的解决方案,以获得相同的结果?我给你我的投票,以补偿我不理解的否决票,也。有些人对否决票感到高兴。谢谢你的回答。感谢你的回答和同理心。。做得好