Php 如何将实际的SQL查询打印到文件中?
喂,这是我的问题Php 如何将实际的SQL查询打印到文件中?,php,mysql,mysqli,prepared-statement,Php,Mysql,Mysqli,Prepared Statement,喂,这是我的问题 $stmt = "SELECT * FROM foo WHERE x=?"; 如何将上述查询和绑定参数打印到屏幕或PHP文件中 当我打印$stmt时,它会显示: 无法将mysqli_stmt转换为字符串 这是我的密码: if ($stmt = $this->conn->prepare($query)) { $stmt ->bind_param('ss', $un, $pwd); logToFile ("my.log", "inside mysq
$stmt = "SELECT * FROM foo WHERE x=?";
如何将上述查询和绑定参数打印到屏幕或PHP文件中
当我打印
$stmt
时,它会显示:
无法将mysqli_stmt转换为字符串
这是我的密码:
if ($stmt = $this->conn->prepare($query)) {
$stmt ->bind_param('ss', $un, $pwd);
logToFile ("my.log", "inside mysql\n");
logToFile ("my.log", $stmt);
编辑:
快速回答
啊,我现在明白了。您正在尝试打印数组。您需要对其进行迭代/循环以打印每个值$stmt作为数组从SQLite返回
尝试以下方法开始:
foreach( $stmt as $key => $value){
echo "Key: $key, Value: $value <br />";
}
方括号中的数字(0,1,2,15)是键,引号中的文本是值。这是一个索引数组,其中每个元素都有一个索引号。关联数组是使用字符串而不是数字来标识数组中的每个项的数组。下面是一个简单的示例:
$myArray['bob'] = "foo";
...
$myArray['joe'] = "bar";
在这个数组中,我们使用字符串作为键,而不是数字。就我个人而言,我只认为这在处理多维数组时有用,但这不是现在
祝你好运,希望这有帮助。你可以记录你的PHP变量
$query
,它包含带有参数占位符的SQL查询
但您可能希望结合参数值记录查询。这是一个非常常见的请求,但是这些信息不是通过客户端库公开的,因此您无法从PHP中读取
当您execute()
查询时,可以将查询与MySQL中的参数值结合起来
print $query;
但你不知道$query中有什么吗
尝试:
它将告诉您stmt对象中的内容
实际上,serialize是我最喜欢的调试输出格式。如果您想问一个有错误的问题,请发布代码!我们不是读心术的人。这里是:if($stmt=$this->conn->prepare($query)){$stmt->bind_param($ss',$un,$pwd);logToFile(“my.log”,“inmysql\n”);logToFile(“my.log”,“$stmt”);这对我来说很有意义。他有一个已准备好的查询。在准备过程中,它不会存储为字符串,您无法从中获取作为字符串的简单SQL查询。不过,我不是100%同意,所以我只做一个注释。Moshe,这给出了一个错误。>可捕获的致命错误:类mysqli_stmt的对象无法在H:\wamp\www\magi中转换为字符串第29行的cmall\classes\Mysql.php
print $query;
print serialize($stmt);