Php mySQL查询有问题。需要*而不是';*';

Php mySQL查询有问题。需要*而不是';*';,php,mysql,string,escaping,query-string,Php,Mysql,String,Escaping,Query String,我有以下代码不起作用。它不工作,因为它将执行查询 其中column='*',而不是其中column=* 我试着想一种方法来获得它,如果变量在表单中发布,那么它将在变量为'var'的地方运行,如果没有发布,那么在列为=*的地方运行,但是我想不出一种方法,我尝试的一切都是不正常的或不起作用的 if(isset($_POST['variable'])){ $variable=$_POST['variable']; } else{$variable='*';} $

我有以下代码不起作用。它不工作,因为它将执行查询

其中column='*',而不是其中column=*

我试着想一种方法来获得它,如果变量在表单中发布,那么它将在变量为'var'的地方运行,如果没有发布,那么在列为=*的地方运行,但是我想不出一种方法,我尝试的一切都是不正常的或不起作用的

    if(isset($_POST['variable'])){
    $variable=$_POST['variable'];
    }
    else{$variable='*';}
    $sql="SELECT * FROM table WHERE column = '$variable'";
编辑,下面是实际代码:

<form method='post' action='policy.php?go'>
<input type='radio' name='gen' value='M'>Male
<input type='radio' name='gen' value='F'>Female
<select name='state'>
<option value='AK'>AK</option>
<option value='WY'>WY</option>
</select> 
<input type='radio' name='logic' value='>'>Older Than
<input type='radio' name='logic' value='<'>Younger Than
<select name='age'>
<option value='5'>5</option>
<option value='11'>11</option>
<option value='17'>17</option>
<option value='65'>65</option>
</select> 
<input type='submit' name='submit' value='Search'>
</form>
<?php 
if(isset($_GET['go']) && isset($_POST['submit'])){
if(isset($_POST['state'])){
$state="'".mysql_real_escape_string( $_POST['state'] )."'";
}
else{ $state='*';}
if(isset($_POST['age'])){
$age=$_POST['age'];
//append to query string
}
if(isset($_POST['logic'])){
$log=$_POST['logic'];
//append to query string
}
else{$log='';}
if(isset($_POST['gen'])){
$gen="'".mysql_real_escape_string( $_POST['gen'] )."'";
}
else {$gen='*';}
echo "<table id='hor-minimalist-b' summary='Employee Pay Sheet' class='tablesorter'>
<caption>Age: ".$log." ".$age." Gender: ".$gen." </caption>
<thead>
<tr>
<th scope='col'>State</th>
<th scope='col'>Number</th>
</tr>
</thead>
<tbody>";
// (WHY IS THIS NOT WORKING?)
$sql = "SELECT SUM(num) AS sum, state,gen,age FROM `policy-ssi` 
WHERE age $log $age AND gen = $gen
GROUP BY state
ORDER BY sum DESC";
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)) {

男性
女性
AK
WY
早于
小于
5.
11
17
65

在MySQL中,字符串的通配符是
%
,而不是
*
。为了匹配字段,不管字段中有什么,请将
else{$gen='*';}
更改为
else{$gen='\“%\';}

此外,为了使用通配符,您的查询应该是

$sql = "SELECT SUM(num) AS sum, state,gen,age FROM `policy-ssi` 
WHERE age $log $age AND gen LIKE $gen
GROUP BY state
ORDER BY sum DESC";
-1对于
“我不担心安全”