基本上,它就是标题所说的。我通过mysqli->查询进行查询,它可以工作。我像这样改写它,它什么也没做。
$conn = new mysqli('localhost','root','root','test');
if (!$conn) { die('Error1');}
$sql = 'SELECT * FROM test_data WHERE type = ?';
$one = 1;
$ps = $conn->prepare($sql);
$ps->bind_param('i', $one);
$ps->execute();
$out = '';
$ps->bind_result($out);
print_r($ps);
echo out;
$ps->fetch();
print_r($ps);
echo out;
输出如下,重复两次:
mysqli_stmt Object ( [affected_rows] => -1 [insert_id] => 0 [num_rows] => 0 [param_count] => 1 [field_count] => 7 [errno] => 0 [error] => [sqlstate] => 00000 [id] => 1 )
有谁知道我可以用什么来进一步调试这个?
编辑:这是有效的代码:
$conn = new mysqli('localhost','root','root','test');
if (!$conn) { die('Error1');}
$sql = 'SELECT * FROM test_data WHERE type = 1';
$ps = $conn->query($sql);
$ps->fetch_assoc();
print_r($ps);
哪个输出:
mysqli_result Object ( [current_field] => 0 [field_count] => 7 [lengths] => Array ( [0] => 1 [1] => 10 [2] => 3 [3] => 1 [4] => 1 [5] => 1 [6] => 2 ) [num_rows] => 10 [type] => 0 )
答案 0 :(得分:0)
当您使用bind_result时,您需要知道结果中将包含多少列,然后您需要为结果中的每一列提供一个变量。
我们无法知道结果集应该是什么样子,因为您使用的是SELECT * FROM test_data,但除非test_data只有一列,否则您没有传递足够的变量。
例如,如果结果集中有3列,则需要以下内容:
$ps->bind_result($out1, $out2, $out3);
从那里,你是print_r($ ps)当然是mysqli对象。我不确定你对此的期望,但没有理由试图转储该对象。
如果结果集可能有多行,则需要执行获取循环:
while ($ps->fetch()) {
echo "$out1, $out2, $out3 <br>";
}