someVar=\"2.60.3\"
好的,我们走了。这段代码不起作用,因为我基本上得到一个错误告诉我跟随
$id = $_REQUEST['id'];
$stmt = $conn->prepare('SELECT * FROM test WHERE id = ?');
echo $id;
$stmt->bind_param('s', $id);
$stmt->execute();
// This is line 12
while ($row = $stmt->fetch()) {
$test = $row['test'];
}
我不知道我做错了什么,但我已经尝试了#0 /example/example.php(2): require()
#1 {main}
thrown in /example/example.inc.php on line 12
和bind_result()
这些也没有用。我在这里读了很多其他的问题,但是他们没有帮助我。
这是连接
$stmt->fetch_assoc()
答案 0 :(得分:0)
你没有做好准备好的陈述,请看:
$id = $_REQUEST['id'];
$stmt = $conn->prepare('SELECT col1,col2,col3 FROM test WHERE id = ?');
$stmt->bind_param('i', $id);
$stmt->execute();
$stmt->bind_result($col1,$col2,$col3); // you need to bind the result when using prepared statements
$stmt->store_result(); // store it so if the number of rows retrieved is large they won't be dropped during loop or cause the overload error
while ($stmt->fetch()) {
$test = $col1;
echo $col2;
}
$stmt->close();
答案 1 :(得分:0)
使用MySQLi预处理语句时,它与使用标准查询略有不同。您需要使用mysqli_stmt::bind_result()
,或将结果集存储为mysqli_stmt::get_result()
,然后才能在获取结果时使用数据。请注意,您需要使用MySQL本机驱动程序mysqlnd
才能使用get_result()
- 否则您需要使用bind_result()
手动绑定每个列。
以下是如何使用bind_result()
的示例。请注意,您需要绑定与查询中一样多的列,并且由于您执行SELECT *
,因此需要绑定表中的所有内容 - 但,该方法将失败如果您以后在表中添加一列。因此,最好只选择所需的列,例如SELECT id, test FROM..
。
$id = $_REQUEST['id'];
$stmt = $conn->prepare('SELECT test, id FROM test WHERE id = ?');
$stmt->bind_param('s', $id);
$stmt->execute();
$stmt->bind_result($test, $result_id);
$stmt->fetch());
/*
* If there was any matching rows, the variables defined in bind_param()
* now hold the values
* You can then use '$test' and '$result_id'
*/
echo $test;
$stmt->close();
如果您安装了MySQL本机驱动程序,则可以使用get_result()
并将其用作“常规”查询。如果你做SELECT *
那就没那么重要了(虽然我不建议你选择所有的东西 - 你应该选择你需要的列,而不是更多)。
$id = $_REQUEST['id'];
$stmt = $conn->prepare('SELECT * FROM test WHERE id = ?');
$stmt->bind_param('s', $id);
$stmt->execute();
$result = $stmt->get_result(); // $result is now an object of MySQLi resource, and not MySQLi statement
// It can now be used as as the result-set of a regular query
$row = $result->fetch_assoc());
$test = $row['test'];
echo $test;
$stmt->close();