【问题标题】:PHP - convert string empty to nullPHP - 将字符串空转换为空
【发布时间】:2017-06-14 06:25:54
【问题描述】:

当从 $_GET 变量中获取值并将其放入具有两个条件的 php 查询中时,我有一个 php 页面:

AND book_id = '$bookid"
AND book_date between coalesce('$bookdate',book_date) AND coalesce('$bookdate',book_date)

问题是这个条件:AND book_date between coalesce('$bookdate',book_date) AND coalesce('$bookdate',book_date) 为了工作,查询需要'$bookdate' = null,并且在检索变量时,将值设置为字符串。

这个怎么做?

谢谢

【问题讨论】:

    标签: php string null


    【解决方案1】:

    在进行 sql 查询之前检查变量:

    $bookdate = !empty($bookdate) ? $bookdate : null;

    【讨论】:

    • 你真的想要变量为空或者如果为空则排除条件吗?
    • 我找到了解决方案。从page1.php 中通过GET 变量大段查看所有数据。在 page2.php 中有一个表单可以为 $date1 和 $date2 应用过滤器。当在filed1中放一个值时,这个值被复制到filed2中。在这种模式下,真正应用 where 条件。
    【解决方案2】:

    您似乎只需要在查询中使用之前有条件地声明您的变量。

    $bookdate = !strlen($bookdate) ? null : $bookdate
    

    或者也许更合适来自$_GET...

    $bookdate = empty($_GET['bookdate']) ? null : $bookdate
    

    ...因为您的变量名称暗示了一个日期类型的值,我将假设 0 值不会被传递或对您的用例无效。我这样说是因为empty()0 评估为true

    *在您尝试访问/操作它们以避免收到通知之前,应检查存在的超全局元素。 (例如isset()empty()array_key_exists()

    最终,您不应该将变量直接注入查询中。您应该使用准备好的语句并将变量绑定到占位符。

    【讨论】:

      猜你喜欢
      • 2016-05-25
      • 1970-01-01
      • 1970-01-01
      • 2014-10-12
      • 1970-01-01
      • 2011-07-31
      • 2014-11-12
      • 1970-01-01
      • 2015-07-17
      相关资源
      最近更新 更多