标签: pdo

PDO获取插入的最后一个ID

我有一个查询,我想要插入最后一个ID.字段ID是主键并自动递增.

我知道我必须使用这个声明:

LAST_INSERT_ID()
Run Code Online (Sandbox Code Playgroud)

该语句适用于这样的查询:

$query = "INSERT INTO `cell-place` (ID) VALUES (LAST_INSERT_ID())";
Run Code Online (Sandbox Code Playgroud)

但是,如果我想使用此声明获取ID:

$ID = LAST_INSERT_ID();
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Fatal error: Call to undefined function LAST_INSERT_ID()
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

php mysql database pdo

144
推荐指数
2
解决办法
19万
查看次数

在PHP中使用PDO,如何检查最终的SQL参数化查询?

在PHP中,当使用带有参数化查询的PDO访问MySQL数据库时,如何检查最终查询(在替换所有令牌之后)?

有没有办法检查数据库真正执行的是什么?

php mysql pdo sql-parametrized-query

139
推荐指数
5
解决办法
11万
查看次数

PDO Prepared在单个查询中插入多行

我目前在MySQL上使用这种类型的SQL在一个查询中插入多行值:

INSERT INTO `tbl` (`key1`,`key2`) VALUES ('r1v1','r1v2'),('r2v1','r2v2'),...
Run Code Online (Sandbox Code Playgroud)

在PDO上的读数中,使用预处理语句应该比静态查询具有更好的安全性.

因此,我想知道是否可以使用预准备语句生成"通过使用一个查询插入多行值".

如果是,我可以知道如何实施它?

php pdo insert prepared-statement

136
推荐指数
8
解决办法
15万
查看次数

Laravel Migration Error:语法错误或访问冲突:1071指定密钥太长; 最大密钥长度为767字节

Laravel 5.4上的迁移错误 php artisan make:auth

[Illuminate\Database\QueryException] SQLSTATE [42000]:语法错误或访问冲突:1071指定密钥太长; 最大密钥长度为767字节(SQL:alter tabl e usersadd unique users_email_unique(email))

[PDOException] SQLSTATE [42000]:语法错误或访问冲突:1071指定密钥太长; 最大密钥长度为767字节

mysql pdo laravel laravel-5 laravel-5.4

134
推荐指数
20
解决办法
13万
查看次数

如何调试PDO数据库查询?

在迁移到PDO之前,我通过连接字符串在PHP中创建了SQL查询.如果我得到数据库语法错误,我可以回显最终的SQL查询字符串,在数据库上自己尝试,并调整它直到我修复错误,然后将其放回代码中.

准备好的PDO语句更快,更好,更安全,但有一件事困扰我:我从未看到最终查询,因为它被发送到数据库.当我在Apache日志或我的自定义日志文件中出现语法错误时(我在catch块中记录错误),我看不到导致它们的查询.

有没有办法捕获PDO发送到数据库的完整SQL查询并将其记录到文件中?

php sql pdo

133
推荐指数
9
解决办法
13万
查看次数

PDO的查询与执行

他们都做同样的事情,只是区别对待吗?

除了使用prepare之间有什么区别

$sth = $db->query("SELECT * FROM table");
$result = $sth->fetchAll();
Run Code Online (Sandbox Code Playgroud)

$sth = $db->prepare("SELECT * FROM table");
$sth->execute();
$result = $sth->fetchAll();
Run Code Online (Sandbox Code Playgroud)

php pdo

128
推荐指数
3
解决办法
13万
查看次数

从PDO预处理语句中获取原始SQL查询字符串

有没有办法在预准备语句上调用PDOStatement :: execute()时获取原始SQL字符串?出于调试目的,这将非常有用.

php mysql sql pdo pdostatement

125
推荐指数
9
解决办法
9万
查看次数

MySQL,MySQLi和PDO有什么区别?

MySQL,MySQLiPDO有什么区别?

哪一个最适合与PHP-MySQL一起使用?

php mysql mysqli pdo

124
推荐指数
3
解决办法
11万
查看次数

MySQL检查表是否存在而不抛出异常

什么是检查MySQL中是否存在表(最好是通过PHP中的PDO)而不抛出异常的最佳方法.我不想解析"SHOW TABLES LIKE"的结果等等.必须有某种布尔查询?

php mysql database pdo

122
推荐指数
3
解决办法
10万
查看次数

PDO MySQL:是否使用PDO :: ATTR_EMULATE_PREPARES?

这是我到目前为止所读到的PDO::ATTR_EMULATE_PREPARES:

  1. PDO的准备仿真对性能更好,因为MySQL的本机准备绕过了查询缓存.
  2. MySQL的本机准备更好于安全性(防止SQL注入).
  3. MySQL的本机准备更适合错误报告.

我不知道这些陈述是多么真实.选择MySQL接口时我最担心的是阻止SQL注入.第二个问题是表现.

我的应用程序目前使用过程MySQLi(没有预处理语句),并且使用了很多查询缓存.它很少会在单个请求中重复使用预准备语句.我开始转向PDO以获取已准备好的语句的命名参数和安全性.

我正在使用MySQL 5.1.61PHP 5.3.2

我应该PDO::ATTR_EMULATE_PREPARES启用还是不启用?有没有办法既具有查询缓存的性能又具有预准备语句的安全性?

php mysql pdo

113
推荐指数
7
解决办法
5万
查看次数