说,这是我的查询
$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);
答案 0 :(得分:3)
您可以使用参数占位符记录包含SQL查询的PHP变量$query
。
但您可能希望将查询与参数值结合使用。这是一个非常常见的请求,但是这些信息不会通过客户端库公开,因此您无法从PHP中读取它。
您可以在查询execute()
时将查询与MySQL General Query Log中的参数值结合使用。
答案 1 :(得分:0)
修改强>
快速回答
啊,我现在明白了。您正在尝试打印阵列。您需要迭代/循环遍历它以打印每个值。 $ stmt从SQLite作为数组返回。尝试此操作:
foreach( $stmt as $key => $value){
echo "Key: $key, Value: $value <br />";
}
解释:
这里发生的是PHP从SQL接收数组,并且数组中的每个元素都有一个键和一个值。请考虑以下事项:
$myArray[0] = "ElementZero";
$myArray[1] = "ElementOne";
$myArray[2] = "ElementTwo";
...
$myArray[15] = "ElementFifteen";
方括号(0,1,2,15)中的数字是您的键,引号中的文字是您的值。这是一个索引数组,其中每个元素都有一个索引号。关联数组是使用字符串而不是数字来标识数组中的每个项目。快速示例:
$myArray['bob'] = "foo";
...
$myArray['joe'] = "bar";
在这个数组中,我们使用字符串作为键而不是数字。就个人而言,我在处理多维数组时只看到这个有用,但现在还不行......
祝你好运,希望这会有所帮助。答案 2 :(得分:0)
print $query;
但你不知道$ query中的内容吗?
尝试:
print serialize($stmt);
它会告诉你stmt对象中的内容
实际上,serialize是我最喜欢的调试输出格式。