Php 最简单的MySQL(可选)。怎么用?

Php 最简单的MySQL(可选)。怎么用?,php,mysql,pdo,Php,Mysql,Pdo,下面的代码段显示了对表中所有记录的SELECT查询 如您所见,我已经注释掉了WHERE子句及其对应的PDO绑定 # CREATE PDO CONNECTION $pdoConnection = self::pdoConnection(); # ESTIMATE QUERY STRING... $pdoQueryString = " SELECT * FROM tblEstimate

下面的代码段显示了对表中所有记录的SELECT查询

如您所见,我已经注释掉了WHERE子句及其对应的PDO绑定

# CREATE PDO CONNECTION
$pdoConnection = self::pdoConnection();

# ESTIMATE QUERY STRING...
$pdoQueryString = "
                  SELECT *
                  FROM
                    tblEstimate
                  -- WHERE status = :estimatesFilter
                  LIMIT 5;

                  ";

# PREPARE...
$pdoStatement = self::pdoStatement($pdoConnection, $pdoQueryString);
# BIND...
// $pdoStatement->bindParam(":estimatesFilter", $estimatesFilter, PDO::PARAM_STR); // STR
# EXECUTE...
$pdoStatement->execute();
# FETCH ALL...
$pdoResultSet = $pdoStatement->fetchAll();
我知道我可以使用if条件来实现字符串连接,但是有没有“更高级”的方法

其他想法


我已经读过MySQL的COALESCE函数,但还不足以知道它是否只适用于我经常遇到的存储过程。

要更改查询的形状,必须使用动态SQL(例如,某种类型的字符串连接)。但是,如果条件符合相同的形状,则可以这样写:“…其中:x为NULL或:x=COL…”(例如:当为x给定值时,条件仅“应用”)。更高级的变体可以用CASE编写。记住要注意查询计划。此外,即使使用字符串连接来构建查询,值仍应与参数绑定一起应用。这可以保持生成的查询更干净,如果编写正确,仍然可以避免SQL注入。如果COALESCE函数与此问题相关,您能否对其进行评论?仍然对它感兴趣。是的,任何查询生成器都可以用来避免查询的丑陋字符串连接。我帮助维护一个名为的独立查询生成器(但任何查询生成器都可以)。它基本上是一个面向对象的查询表示,您可以在其中动态地添加部分。以下是一些用于比较的laravel文档。例如:
$user=DB::table('users');if(true){$user->where('name','John');}$record=$user->first()那真的很酷。谢谢你给我指出了正确的方向,Alex。要改变查询的形状,必须使用动态SQL(例如,某种类型的字符串连接)。但是,如果条件符合相同的形状,则可以这样写:“…其中:x为NULL或:x=COL…”(例如:当为x给定值时,条件仅“应用”)。更高级的变体可以用CASE编写。记住要注意查询计划。此外,即使使用字符串连接来构建查询,值仍应与参数绑定一起应用。这可以保持生成的查询更干净,如果编写正确,仍然可以避免SQL注入。如果COALESCE函数与此问题相关,您能否对其进行评论?仍然对它感兴趣。是的,任何查询生成器都可以用来避免查询的丑陋字符串连接。我帮助维护一个名为的独立查询生成器(但任何查询生成器都可以)。它基本上是一个面向对象的查询表示,您可以在其中动态地添加部分。以下是一些用于比较的laravel文档。例如:
$user=DB::table('users');if(true){$user->where('name','John');}$record=$user->first()那真的很酷。谢谢你给我指出了正确的方向,亚历克斯。