mysql_query中变量的通配符运算符

时间:2013-11-27 02:34:46

标签: php mysql variables wildcard

我的mysql_query必须包含WHERE columnName = '$variable1'。例如:

$result = mysql_query("SELECT * FROM database WHERE columnName = '$variable1'");

我希望$variable1的内容检索ColumnName中的任何值;有点像通配符操作符。我尝试使用这样的星号(*):

$variable1 = '*'
$result = mysql_query("SELECT * FROM database WHERE columnName = '$variable1'");

while($row = mysql_fetch_array($result)) {
    // Echo the content of ALL ROWS IN TABLE here
}

此回调的结果在回显时应显示数据库中的所有行。星号不作为通用变量,也不是空格(例如$variable = '')。 MySQL中的通配符运算符与所有文本组合匹配是什么?

3 个答案:

答案 0 :(得分:3)

SQL中的通配符是%。您需要使用LIKE代替=进行通配符匹配。 例如:

SELECT * 
FROM table 
WHERE ColumnHas LIKE "%something%";

此示例将匹配中间带有“something”的任何字符串,例如

"This is something to match". 

如果您只希望在字符串的开头匹配通配符,则排除尾随%(反之亦然)。

对于您的情况,

$variable1 = '%'
$result = mysql_query("SELECT * FROM database WHERE columnName LIKE '$variable1'");

应该有用。

但是你的用例让我觉得不需要通配符匹配。您也可以使用

$result = mysql_query("SELECT * FROM database WHERE columnName NOT NULL");

提供columnName定义为将NULL保留为默认值。

答案 1 :(得分:1)

这将有效:

$variable1 = "' OR 1 = 1;"

答案 2 :(得分:0)

如果要检索特定列中具有任何值的行,您只需避免在WHERE子句中提及该列。