SQL WHERE LIKE SYNTAX在PHPSyntax中不起作用

时间:2017-07-11 10:36:25

标签: php mysql yii2

我在mySql中有一个名为 Customer 的表。 这是表格:

 -------------------------------------------------
| ID |      COMPANY_NAME        |      STATUS     |
 -------------------------------------------------
|  1 |  HUMBAHAS MAN            |      ACTIVE     |
|  2 |  HUMBAHAS MAN, CO        |    NOT-ACTIVE   |

我正在尝试根据 company_name 作为条件获取状态列的数据。

但我需要公司名称不是敏感案例,因此我使用HUMBAHASHUMBAHAS MAN, CO

获取数据

我已成功使用此

获取数据

示例:

  

SELECT status FROM customer WHERE company_name LIKE'%HUMBAHAS%LIMIT 1'

我会在mySql中得到这样的结果:

 ----------------
|     STATUS     |
 ----------------
|     ACTIVE     |

但我在PHP中得到了一个空数组。 这是我在PHPScript中使用的代码

 $connection = \Yii::$app->db;
 $sql = $connection->createCommand("SELECT status from customer WHERE company_name = '%$nama%' LIMIT 1");
 $exec = $sql->queryColumn();
 print_r($exec);

 //result
 Array
 (
 )

如何在PHPScript中使该语法运行良好?或

php中有类似的脚本吗?

任何帮助将不胜感激。感谢

3 个答案:

答案 0 :(得分:1)

您在查询中使用“=”而不是 LIKE 进行字符串匹配。
只需替换

$sql = $connection->createCommand("SELECT status from customer WHERE company_name = '%$nama%' 
LIMIT 1");

$sql = $connection->createCommand("SELECT status from customer WHERE company_name like '%$nama%'
LIMIT 1");

它适用于你。

答案 1 :(得分:1)

$sql = $connection->createCommand("SELECT status from customer WHERE company_name LIKE '%".$nama."%' LIMIT 1");

试试这个

答案 2 :(得分:0)

你应该这样输入:

$sql="SELECT * FROM `articles` WHERE `title` LIKE '?'";
$result= $conn->prepare($sql);
$result->bindValue(1,''%text%'');
$result->execute();
     

它会起作用。

%text%

END