这是正确的mysqli

时间:2013-06-30 03:18:23

标签: mysql

这是否正确,我知道你不应该再使用mysql了。所以我只是添加了我到底,这是我从互联网上得到的代码,我是mysql的新手,所以我不太清楚我在做什么。我只是想确保这是正确的用法。

$sql = "SELECT lat, lon from zipcodes_2011 WHERE zipcode='$zip'";
  $r = mysqli_query($con, $sql);
  if (!$r) {
     $this->last_error = mysqli_error();
     return false;
  } else {
     $row = mysqli_fetch_array($r);
     mysqli_free_result($r);
     return $row;       
  } 

1 个答案:

答案 0 :(得分:2)

这是不正确的。

查看mysqli_error的文档:它指出mysqli $link不是可选的。您必须将数据库链接传递给它。

$this->last_error = mysqli_error($con);

我也强烈建议准备这个。

$sql = "SELECT `lat`,`lon` FROM `zipcodes_2011` WHERE `zipcode` = ?";

$stmt = mysqli_stmt_init($link);

$error = mysqli_stmt_prepare($stmt, $sql);
if ($error === false) {
    $this->last_error = mysqli_error($con);
    return false;
}

$error = mysqli_stmt_bind_param($stmt, "s", $zip);
if ($error === false) {
    $this->last_error = mysqli_error($con);
    return false;
}

$error = mysqli_stmt_execute($stmt);
if ($error === false) {
    $this->last_error = mysqli_error($con);
    return false;
}

$error = mysqli_stmt_bind_result($stmt, $row);
if ($error === false) {
    $this->last_error = mysqli_error($con);
    return false;
}

$error = mysqli_stmt_fetch($stmt);
if ($error === false) {
    $this->last_error = mysqli_error($con);
    return false;
}

return $row;