Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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表检索数据时如何忽略空格_Php_Mysql_Sql - Fatal编程技术网

Php 从mysql表检索数据时如何忽略空格

Php 从mysql表检索数据时如何忽略空格,php,mysql,sql,Php,Mysql,Sql,我在PHP中与PDO一起工作。我遇到的问题是: 我有一张名为“产品”的桌子。它有一个名为product\u name的列。下面是一些产品名称的示例 product_name ---------- Bfilet de bœuf entier Bar de ligne Saumon entier Beurre 所以当我执行查询时 select * from products where produc

我在PHP中与PDO一起工作。我遇到的问题是: 我有一张名为“产品”的桌子。它有一个名为
product\u name
的列。下面是一些产品名称的示例

product_name
----------
Bfilet de bœuf entier                    
Bar de ligne                             
Saumon entier
Beurre 
所以当我执行查询时

select * from products where product_name='beurre'
它很好用。它返回相应的行

但如果我这样做:

select _ from products where product_name='Saumon entier'"
它不会返回任何结果。当涉及到空间时,似乎存在问题

另一个不寻常的事情是,我在SQL命令行上似乎没有这个问题,只有当我使用PHP检索数据时

有人能给我解释一下原因并提供解决方案吗?

模式匹配 查找。代码类似于:

$stmt = $pdo->prepare('SELECT * FROM products WHERE product_name LIKE ?');
$stmt->execute(['Saumon entier%']);

var_dump($stmt->fetchAll());
编辑后,您似乎不希望像那样使用
,但实际上在字符串末尾有一个空格。快速解决办法是:

SELECT * FROM products WHERE TRIM(product_name) = 'Saumon entier'
但实际上,您应该在输入时修剪空格

对评论中问题的答复 如果我有一个法国产品名称,如“Côde bœuf”,有没有办法替换口音

在大多数情况下,是的。如果您的数据库是
utf8
,例如
utf8\u unicode\u ci
,而
ci
表示不区分大小写,则匹配:

SELECT 'Côte de boeuf' = 'cote de boeuf';

'Côte de boeuf' = 'cote de boeuf'
----------------------------------
                                 1
请注意,我删除了
œ
,因为这不匹配,我不确定它转换为哪个字符。
另一种选择是将“不带重音符号”的产品名称存储在不同的列中,并与之匹配。PHP手册中的Lookup
iconv

是“从”输入错误中选择的吗?这只是您对空格角色的猜测。在提问之前,您必须验证它。正如您所怀疑的,您可能在“entier”后面有一个空格。在提交到数据库之前清理数据。@brian demilia是的,这是一个输入错误。它可能只能治愈症状,但不能治愈疾病。@YourCommonSense这个答案现在是错误的,因为OP编辑了这个问题,并接受了其他含义:)@TooTSKI Perfect!这很有效,非常感谢。好的,但现在我有另一个问题,例如,如果我有一个法国产品名称,如“Côde bœuf”,有没有办法替换重音?所以,要寻找“博乌夫海岸”呢?@Arj补充道,这取决于你的情况,但应该是真实的。