Php 关于mysqli准备的声明的问题
我对mysqli准备的语句有一个基本问题。例如,我想执行一个SELECT查询,我应该这样做:Php 关于mysqli准备的声明的问题,php,mysql,Php,Mysql,我对mysqli准备的语句有一个基本问题。例如,我想执行一个SELECT查询,我应该这样做: <? $city = "Amersfoort"; if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) { $stmt->bind_param("s", $city); $stmt->execute(); $stmt->bind_result($distric
<?
$city = "Amersfoort";
if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {
$stmt->bind_param("s", $city);
$stmt->execute();
$stmt->bind_result($district);
$stmt->close();
}
$mysqli->close();
?>
在上述代码中,是否也需要bind_result?它到底是干什么的
此外,我是否需要在每次查询后关闭mysqli连接?
谢谢。bind\u result指定要写入数据的变量。你可以保持连接打开。只需确保调用$stmt->fetch after$stmt->bind\u result$district
在这里查看示例1:
bind\u result使您在迭代查询结果时,结果集中的列自动映射到局部变量
例如,假设您执行一个查询,该查询返回一个包含三列的结果集,如下所示:
$query = "SELECT Name, CountryCode, District FROM myCity";
$query = "SELECT Name, CountryCode, District FROM myCity";
if ($stmt = $mysqli->prepare($query)) {
$stmt->bind_result($name, $countryCode, $district);
while ($stmt->fetch()) {
printf("%s (%s,%s)\n", $name, $countryCode, $district);
}
}
您希望执行查询并对结果进行处理,比如说打印结果:
if ($result = $mysqli->query($query)) {
while ($row = $result->fetch_row()) {
printf("%s (%s,%s)\n", $row[0], $row[1], $row[2]);
}
}
上述代码的问题在于$row[0]的描述性不强。另一种方法是使用bind_result,如下所示:
$query = "SELECT Name, CountryCode, District FROM myCity";
$query = "SELECT Name, CountryCode, District FROM myCity";
if ($stmt = $mysqli->prepare($query)) {
$stmt->bind_result($name, $countryCode, $district);
while ($stmt->fetch()) {
printf("%s (%s,%s)\n", $name, $countryCode, $district);
}
}
如您所见,每次调用fetch变量$name、$countryCode、$district时,使用bind_result时,都会自动使用当前结果行中的值填充变量$name、$countryCode、$district。有一些细节,你必须确保,阅读更多信息
回答你的另一个问题:你不需要这样做,事实上,除非你非常清楚自己在做什么,否则你不能在每次查询后关闭连接