2013-06-30 3 views
-1

Это правильно, я знаю, что вы больше не должны использовать mysql. Поэтому я просто добавил к концу, это был код, который я получил из Интернета, и я новичок в mysql, поэтому я не совсем уверен, что делаю. Я просто хочу убедиться, что это правильное использование.Правильно ли это mysqli

$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

Почти верно, что он не будет работать, кроме вызова 'mysqli_error()', но не _recommended_, если '$ zip' происходит от ввода пользователем. Если это так, вы должны использовать подготовленный MySQLi оператор вместо вызова 'mysqli_query()' с помощью конкатенированного/интерполированного оператора SQL. [Начните учиться, как это сделать сейчас] (http://php.net/manual/en/mysqli.prepare.php), поскольку вы действительно должны делать это все время. –

+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; 
Смежные вопросы