Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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/2/ssis/2.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\u查询中变量的通配符运算符_Php_Mysql_Variables_Wildcard - Fatal编程技术网

Php mysql\u查询中变量的通配符运算符

Php mysql\u查询中变量的通配符运算符,php,mysql,variables,wildcard,Php,Mysql,Variables,Wildcard,我有一个mysql\u查询,其中必须有WHERE columnName='$variable1'。例如: $result = mysql_query("SELECT * FROM database WHERE columnName = '$variable1'"); SELECT * FROM table WHERE ColumnHas LIKE "%something%"; 我希望$variable1的内容检索ColumnName中的任何值;有点像一个通配符操作符。我尝试过使用星号(*

我有一个
mysql\u查询
,其中必须有
WHERE columnName='$variable1'
。例如:

$result = mysql_query("SELECT * FROM database WHERE columnName = '$variable1'");
SELECT * 
FROM table 
WHERE ColumnHas LIKE "%something%";
我希望
$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中匹配所有文本组合的通配符运算符是什么?

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

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

这将起作用:

$variable1 = "' OR 1 = 1;"
这将有助于:

$variable1 = "' OR 1 = 1;"

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

$result = mysql_query("SELECT * FROM database WHERE columnName = '$variable1'");
SELECT * 
FROM table 
WHERE ColumnHas LIKE "%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
作为默认值。

SQL中的通配符为
%
。您需要使用
而不是
=
进行通配符匹配。 例如:

$result = mysql_query("SELECT * FROM database WHERE columnName = '$variable1'");
SELECT * 
FROM table 
WHERE ColumnHas LIKE "%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
作为默认值。

这将是一个简单的解决方案,但代码需要
WHERE
子句。有没有其他办法解决这个问题?就像一个通配符操作符一样?如果你绝对必须有where子句不做任何事情,你可以使用
where 1=1
这将是一个简单的解决方案,但是代码需要
where
子句。有没有其他办法解决这个问题?就像一个通配符操作符一样?如果您必须使用where子句,而where子句不起任何作用,那么您可以使用
where 1=1
If($var='*'))$result=mysql\u查询(“SELECT*FROM database.table”);else$result=mysql_查询(“SELECT*FROM database.table,其中columnName='$variable1'”)如果($var='*')$result=mysql\u查询(“SELECT*FROM database.table”),这个
怎么办;else$result=mysql_查询(“SELECT*FROM database.table,其中columnName='$variable1'”)这是怎么回事?可以对两个单独的列使用两个通配符吗?例如:
$result=mysql\u query(“从数据库中选择*,其中column1 LIKE%和column2 LIKE%”)@JSW189是的,在一个查询中使用多个通配符是完全可以接受的。@zsaat14是正确的。可以在单个
WHERE
子句中使用任意多个
LIKE
s。我只想警告您,与
类似的
进行通配符匹配可能会导致性能下降。这可能会导致表扫描。请小心放大。
如“%matchstring”
非空
匹配指令最终都无法使用索引进行搜索。是否可以对两个单独的列使用两个通配符?例如:
$result=mysql\u query(“从数据库中选择*,其中column1 LIKE%和column2 LIKE%”)@JSW189是的,在一个查询中使用多个通配符是完全可以接受的。@zsaat14是正确的。可以在单个
WHERE
子句中使用任意多个
LIKE
s。我只想警告您,与
类似的
进行通配符匹配可能会导致性能下降。这可能会导致表扫描。请小心放大。像“%matchstring”这样的
非NULL
匹配指令最终都无法使用索引进行搜索。