当前位置: 首页 > 面试题库 >

是否有更好,更“标准”的方法可以在不使用框架的情况下在PHP中执行SQL查询?

景鸿晖
2023-03-14
问题内容

最长的时间,我一直在PHP中对SQL查询使用以下基本格式:

$sql = "SELECT * FROM `user-data` WHERE `id` = '".$id."' LIMIT 1;";
$fn = mysql_fetch_assoc(mysql_query($sql));

尽管这可以完美地工作,但是对于更长的代码来说,它可能会变得非常混乱,每次我这样做时,我内心深处的某些东西都会对字符串连接感到畏缩。尽管如此,它仍然有效,我几乎在没有重大问题的情况下仍可以使用它。(这是一个温和的示例,我不够密集,无法将用户数据直接传递到SQL字符串中而不先转义,等等)。

我想做的是一些面向对象的东西,但是我不确定最好的方法是什么。能够sql-> insert($ values [,$ where,$ extra]);
或类似的方法,使用PHP的自然关联数组类型以更简化的方式传递查询字符串。不太灵活?是的。更具可读性?不错,而且更难犯“无声的”语法错误。

社区对此有何看法?您看到了什么方法来解决这个问题,这对于您正在从事的项目是最有效的?

没关系,但是我个人做起来并不比SELECT,INSERT和UPDATE复杂得多,只是偶尔嵌套了子查询,但这主要是因为我的SQL风格不执行存储过程。


问题答案:

PDO是许多框架所建立的良好,可靠,安全的解决方案。如果您要从头开始,PDO是坚实的基础。



 类似资料:
  • 问题内容: 如果要使用Linq-SQL,还必须将DB Table拖到设计器表面以创建实体类。 我一直喜欢我的应用程序中的完全控制权,并且不喜欢dotnet创建的类。 是否可以使用我自己的数据访问层实体类在Linq和DB之间提供此连接? 我该如何完成? 问题答案: 您可以使用Linq-to-SQL非常轻松地编写自己的类-只需使用一些属性绘制类即可。 例如,这是我的一个项目中有一个非常简单的表,它可以

  • 问题内容: 我想构建一个PHP脚本来验证SQL查询,但不执行它。它不仅应验证语法,而且还应在可能的情况下让您知道是否可以通过查询中的命令来执行查询。这是我想要执行的操作的伪代码: 这样的事情。我希望它模拟查询而不执行它。那就是我想要的,对此我什么也找不到。 为什么我们不希望执行查询的一个示例是,如果查询向数据库中添加了一些内容。我们只希望它在不修改数据库的情况下对其进行仿真。 任何链接或示例将不胜

  • 问题内容: 我想在集合的每一行上执行一个存储过程,而无需使用带有以下内容的游标: 我在SQL Server 2005中使用T- SQL。我认为使用函数可能是可行的,但是我想如果可能,使用存储过程(公司标准) 问题答案: 10次​​中有9次无需光标或while循环就可以执行所需的操作。但是,如果必须使用一个,我发现while循环会更快。 另外,如果您不想删除或更新表,则可以使用以下方法:

  • 我已经从源代码处构建并安装了另一个glibc,并且我想让现有的用C++编写的可执行文件与自定义glibc一起运行,以供实验之用。为了做到这一点,我尝试更改可执行文件的加载程序。首先,在/lib64下创建了一个名为的链接,其路径指向新的加载程序 其次,通过文本编辑器修改了可执行文件中的加载器路径,将“/lib64/ld-linux-x86-64.so.2”更改为“/lib64/ld_linux-x8

  • 问题内容: 我需要创建一个使用12个参数的存储过程,并使用此参数的不同组合来过滤查询。所有12个参数都不是强制性的,好像我传递3或5或12个参数取决于用户输入的搜索输入。 我可以使用动态SQL查询或“ Case where”语句创建2种方法。这些查询的示例如下: 动态查询 DECLARE @condition VARCHAR(MAX)=’‘ Declare @var1 varchar(10) De

  • 例如,JPA标准API可以在没有生成元模型的情况下使用。失去了类型安全性,但我可以在运行时仅使用反射来创建查询,而无需事先了解数据模型。我想以同样的方式使用Querydsl。我不关心类型安全问题,因为我不知道数据模型。 在我最近的项目中,我想使用Querydsl,主要是因为它构成了持久性之上的另一层。所以我希望可以在JPA、JDO、JDBC、Lucene、Hibernate Search、Mong