2014-01-02 8 views
-2

Я хочу спросить, могу ли я предотвратить инъекцию sql с помощью этого кода?Недопустимое значение sql-инъекции

<?php 
$mysqli = new mysqli("localhost", "root", "", "lists"); 
    if (isset($_POST['main'])) { 
    if (isset($_POST['sub'])) { 
    $main = $mysqli->real_escape_string($_POST["main"]); 
    $sub = $mysqli->real_escape_string($_POST["sub"]); 

    query . . . . 

    } 
    } 
?> 
+5

http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php –

+0

['mysqli :: prepare()'] (http: //www.php. нетто/ручной/EN/mysqli.prepare.php). –

ответ

0

Дубликат: How can I prevent SQL injection in PHP?

Использование подготовленных операторов и параметризованных запросов. Вы можете сделать это следующим образом:

$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name=? and age=?'); 
$stmt->bind_param('si', $_POST['name'], $_POST['age']); 
$stmt->execute(); 

«си» означает строку и целое число, каждую букву к каждым парам соответствующих каждому? ». Дополнительная информация может быть найдена здесь: http://www.php.net/manual/en/mysqli-stmt.bind-param.php

$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)"); 
$stmt->bind_param('sssd', $code, $language, $official, $percent); 

С уважением.

+1

Но как в двух значениях? – user3097736

+0

@ user3097736 обновленный ответ, дайте ему взглянуть на мой первый пример ссылки. $ code идет первым?, $ language переходит на второй? ... –

Смежные вопросы