【发布时间】:2021-08-17 16:04:30
【问题描述】:
我有多个类似于下面的数组。
{
["sku_original"]=>
string(33) "98iuoo"
["po"]=>
string(5) "9897"
["ca"]=>
string(3) "557"
["cl"]=>
string(5) "33"
["aa"]=>
string(3) "80"
["ad"]=>
NULL
["da"]=>
string(4) "143.9"
["dr"]=>
NULL
["cors"]=>
NULL
}
我想在数组中的值为空时使用IS NULL 条件,否则我必须检查equal to 条件如果不为空。
我尝试过类似下面的方法。
$po = $option['po'] != NULL ? $option['po'] : NULL ;
$ca = $option['ca'] != NULL ? $option['ca'] : NULL ;
$cl = $option['cl'] != NULL ? $option['cl'] : NULL ;
$aa = $option['aa'] != NULL ? $option['aa'] : NULL ;
$ad = $option['ad'] != NULL ? $option['ad'] : NULL ;
$da = $option['da'] != NULL ? $option['da'] : NULL ;
$dr = $option['dr'] != NULL ? $option['dr'] : NULL ;
$cors = $option['cors'] != NULL ? $option['cors'] : NULL ;
如果选项索引为空,上述代码不会为变量赋值 我也试过 is_null。
和下面的 SQL。
$sql = "SELECT abc FROM `abc` WHERE `po` = $po AND `ca` = $ca AND `cl` = $cl AND `aa` = $aa AND `ad` = $ad AND `da` = $da AND `dr` = $dr AND `dr` = '$dr' AND `cors` = '$cors' `sku` = '$sku' ";
当值为空时,我必须在 SQL 中检查 IS NULL,否则我必须使用 equal to
【问题讨论】:
-
请分享更多细节。另外,请注意不要使用字符串连接来构建 SQL 查询——它们容易受到 SQL 注入的攻击。更好地使用准备好的语句
-
我不知道字符串连接 SQL 和准备好的语句。您能否分享任何链接以了解更多信息?
-
关于预处理语句,如果使用 PDO:php.net/manual/en/pdo.prepared-statements.php,如果使用 MySQLi:php.net/manual/en/mysqli.quickstart.prepared-statements.php
-
谢谢。我没有额外的细节。我希望我已经解释清楚了
-
旁注:对于所有这些变量赋值,您可以使用 null coalescing operator 代替:
$po = $option['po'] ?? NULL;