相关疑难解决方法(0)

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

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

php mysql sql pdo pdostatement

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

传递给PDOStatement :: bindParam()的参数名称的前导冒号是可选的吗?

将表单的命名参数传递:name给时PDOStatement::bindParam(),无论是否使用了前导冒号,它似乎都有效.

即:这个:

$statement->bindParam(':name', $var);
Run Code Online (Sandbox Code Playgroud)

或这个:

$statement->bindParam('name', $var);
Run Code Online (Sandbox Code Playgroud)

似乎工作.

这是文档 PDOStatement::bindParam()

参数

参数标识符.对于使用命名占位符的预准备语句,这将是以下形式的参数名称:name.对于使用问号占位符的预准备语句,这将是参数的1索引位置.

这是否意味着结肠可以被取消?

php pdo

30
推荐指数
1
解决办法
2895
查看次数

在PHP PDO中获取上次执行的查询

我想知道使用PHP PDO执行什么查询.我有:

<?php

try {  
  $DBH = new PDO("mysql:host=localhost;dbname=mytable", 'myuser', 'mypass');  
}  
catch(PDOException $e) {  
    echo $e->getMessage();  
}  

$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );  
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );  

$STH = $DBH->("INSERT INTO mytable (column1, column2, column3 /* etc...*/) value (:column1, :column2, :column3 /* etc...*/)"); 
$STH->bindParam(':column1', $column1);  
$STH->bindParam(':column2', $column2);  
$STH->bindParam(':column3', $column3);  
 /* etc...*/

$STH->execute();  

// what is my query?
Run Code Online (Sandbox Code Playgroud)

我想得到类似的东西:

INSERT INTO mytable (column1, column2, column3) value ('my first column', 32, 'some text')
Run Code Online (Sandbox Code Playgroud)

可能吗?谢谢

php pdo

29
推荐指数
2
解决办法
4万
查看次数

如何查看准备好的PDO SQL语句

可能重复:
PDO准备的声明

我确定答案很简单,但我似乎无法找到它.

我正在使用PDO(PHP数据对象)对MySQL数据库运行查询,并且发现在对数据库执行之前显示准备好的查询很有用.

有没有办法做到这一点?例如:

$query = 'SELECT Id, Name, Comment FROM Users WHERE Id = :id';
$pdoStatement = $db->prepare($query);
$pdoStatement->bindValue(':id', $id);

// How can I view the actual statement that will be executed, showing the real
// value that will be used in place of ':id'

$pdoStatement->execute();
Run Code Online (Sandbox Code Playgroud)

php mysql sql pdo

5
推荐指数
1
解决办法
7428
查看次数

标签 统计

pdo ×4

php ×4

mysql ×2

sql ×2

pdostatement ×1