在 PHP 中创建准备好的语句
Posted
技术标签:
【中文标题】在 PHP 中创建准备好的语句【英文标题】:Creating a prepared statement in PHP 【发布时间】:2017-12-27 23:34:49 【问题描述】:我想编写一个php
脚本,其中我必须使用准备好的语句在mysql
数据库中执行INSERT
查询。
因为我是PHP
的初学者,所以我不知道该怎么做。所以我在***
上查找它并找到了这个How to create a secure mysql prepared statement in php?
。
所以我开始以与在答案中接受的答案 BUT 中相同的方式进行操作,使用了一些方法,例如
prepare
准备SELECT
查询
bind_param
绑定参数到查询
close
接近$stmt
Visual Studio Code
在我尝试使用它们时没有向我建议。此外,当我使用这些方法并将指针悬停在它们上方时,Visual Studio Code
没有显示任何文档,这让我思考这些方法是否可用。
Visual Studio Code
建议 odbc_prepare
,而不是 prepare
方法,而不是 bind_param
,它建议 mysqli_bind_param
,而不是 close
,它建议 odbc_close
。
我正在使用PHP 7.2
问题: 像prepare
、close
、bind_param
这样的方法在PHP 7
中不可用吗?我可以使用Visual Studio Code
向我建议的方法来代替这些方法吗?
【问题讨论】:
php.net/manual/en/book.pdo.php "问题:PHP 7 中是否不提供 prepare、close、bind_param 等方法,我可以使用 Visual Studio Code 建议的方法来代替这些方法吗?" - 为什么它们在 php 7 中不可用?发帖前你根本没有看手册吗? @FunkFortyNiner 我确实浏览了文档。根据 Gant 的 回答,prepare
或 bind_param
只能与 mysqli
前缀一起使用,但请查看此 Prepared Statements,他们在其中使用了 prepare
和 bind_param
方法mysqli
对象。我也在做同样的事情,但Visual Studio Code
根本没有建议这些方法。
因为 VSC 不专注于 php !您不会看到有关所有功能和方法的建议,那里有一些 php IDE 可以提供更多建议。只需谷歌“PHP IDE”(我个人使用 atom,它不建议 99% 的 php 函数,并且根本没有方法建议!但仍然喜欢它,干净且比 VSC 更快)
【参考方案1】:
这些功能不是独立的功能。它们是 PDO 对象的方法。要了解有关 PDO 的更多信息,请查看本教程:PDO Tutorial
$pdo = new PDO();
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email AND status=:status');
$stmt->execute(['email' => $email, 'status' => $status]);
$user = $stmt->fetch();
【讨论】:
【参考方案2】:您只能在带有mysqli_
前缀的程序样式中使用没有mysqli
对象的这些函数。
然而,面向对象的风格通常是首选。
PHP.net has a comparison of the two approches.
【讨论】:
看看Prepared Statements,他们在mysqli
对象中使用了这些方法。当我使用对象方法时,不建议使用这些方法,仅在使用过程方法时才建议使用。以上是关于在 PHP 中创建准备好的语句的主要内容,如果未能解决你的问题,请参考以下文章