Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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 PDO MYSQL所有_Php_Mysql_Pdo - Fatal编程技术网

PHP PDO MYSQL所有

PHP PDO MYSQL所有,php,mysql,pdo,Php,Mysql,Pdo,我准备了以下mysql语句来搜索表。 表中有一个is_活动列。用户可以选择搜索真(1)、假(0)或全部。在所有语句的情况下,需要搜索true和false 当系统通过:isActive绑定时,如果用户希望搜索true和false,我需要对:isActive应用什么值?提前感谢您的帮助 $stmt = $conn->prepare( 'SELECT company_id, name, alias, fk_company_type as type, is_active as active

我准备了以下mysql语句来搜索表。 表中有一个is_活动列。用户可以选择搜索真(1)、假(0)或全部。在所有语句的情况下,需要搜索true和false

当系统通过:isActive绑定时,如果用户希望搜索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);

您可以在之前对所有内容进行检查,这样您的prepare周围就有一个if语句,然后准备一个包含is_active where子句的语句,或者准备一个不包含该子句的语句。您不能在查询中省略
where
子句,或者在这种情况下更改为允许
<2
条件吗输入Dave和n-dru,我可以只使用单独的if语句,但原因是我想找到一种方法,因为我还有其他条件要包含在Where中。例如,fk_公司类型,可以是全部公司类型,也可以是某个公司类型。我试图避免多个if语句。但似乎我别无选择。我知道一定有办法注入PDO准备的语句中!:)谢谢你。我尝试过,但PHP似乎不允许我注入“0或1”。它看起来只接受0,而忽略或1。你有这个问题吗?