我有以下用于搜索表的 mysql 准备语句。 表中有一个 is_active 列。用户可以选择搜索真 (1)、假 (0) 或全部。在所有语句的情况下都需要搜索 true AND false。
由于系统是通过 :isActive 绑定(bind)的,如果用户想要同时搜索 true 和 false,我需要向 :isActive 应用什么值?在此先感谢您的帮助。
$stmt = $conn->prepare(
'SELECT company_id, name, alias, fk_company_type as type, is_active as active
FROM company
WHERE is_active = :isActive
AND name LIKE :srchField'
);
$stmt->bindParam(':srchField', $srchField, PDO::PARAM_INT);
//bind :srchField to $srchField in sql statement
$stmt->bindParam(':isActive', $isActive, PDO::PARAM_INT);
最佳答案
有一个 php 标签可以检查变量是否为整数,您可以使用它来解决这个问题。
$stmt = $conn->prepare('SELECT company_id, name, alias, fk_company_type as type, is_active as active FROM company WHERE (is_active = :isActive) AND (name LIKE :srchField)');
$stmt->bindParam(':srchField', $srchField, PDO::PARAM_INT); //bind :srchField to $srchField in sql statement
$isActive = is_int($int) ? $int : '0 OR 1'; // $int is an argument which to search option.
$stmt->bindParam(':isActive', $isActive, PDO::PARAM_INT);
关于PHP PDO MYSQL WHERE ALL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29771335/