调用未定义的方法 PDO::real_escape_string()
Posted
技术标签:
【中文标题】调用未定义的方法 PDO::real_escape_string()【英文标题】:Call to undefined method PDO::real_escape_string() 【发布时间】:2016-07-09 17:05:25 【问题描述】:我想使用 php 和 Angular js 将数据插入 MS Access 数据库 我的 Angular JS 代码如下
var app=angular.module('cardupdate',[]);
app.controller('cardContl',function($scope,$http)
$scope.insertCardInfo=function()
$http.post("insert.php",'name':$scope.name,'email':$scope.email)
.success(function()
$scope.msg="data inserted success";
);
;
);
insert.php 代码如下
$dbName =$_SERVER["DOCUMENT_ROOT"] . "/name/test.mdb";
if (!file_exists($dbName))
die("Could not find database file.");
$db = new PDO("odbc:DRIVER=Microsoft Access Driver (*.mdb); DBQ=$dbName; Uid=; Pwd=;");
$connstr = "DRIVER=Microsoft Access Driver (*.mdb); DBQ=$dbName;";
$conn_access = odbc_connect($connstr, "", "");
$data=json_decode(file_get_contents("php://input"));
$name=$db->real_escape_string($data->name);
$email=$db->real_escape_string($data->email);
$q="insert into Table1 values(1,'$name','$email')";
odbc_exec($conn_access, $q);
我收到以下错误:
致命错误:在第 14 行调用 C:\xampp\htdocs\name\insert.php 中未定义的方法 PDO::real_escape_string()
【问题讨论】:
【参考方案1】:您尝试使用的功能不存在,因此出现错误。您正在寻找的是 PDO 的替代品(尽管鲜为人知),称为 PDO::quote
。
但请注意:
如果您使用此函数构建 SQL 语句,强烈建议您使用 PDO::prepare() 来准备带有绑定参数的 SQL 语句,而不是使用 PDO::quote() 将用户输入插入到 SQL 语句中.带有绑定参数的预处理语句不仅更便携、更方便、不受 SQL 注入的影响,而且执行起来通常比插值查询快得多,因为服务器端和客户端都可以缓存查询的编译形式。
所以你宁愿使用prepared statements 并避免整个转义过程。
【讨论】:
你不会,你可以通过最后提供的链接使用准备好的语句。 如何从 json_decode(或 $data)中提取姓名和电子邮件值? 感谢您的警告。 AFAIK,您不能使用准备好的语句构建大批量插入语句。你需要一大串字符串(2020)。以上是关于调用未定义的方法 PDO::real_escape_string()的主要内容,如果未能解决你的问题,请参考以下文章
未调用自定义 UIButton 的 setIsSelected 方法
调用未定义的方法 Cake\ORM\Entity::query() CakePhp