2016-07-22 2 views
-4

, пожалуйста, помогите мне, я пытаюсь вставить в БД с защитой от инъекций, и я нашел пример на w3schools, но это не работает для меня. Соединение правильное и работает. Поскольку я новичок в SQL и программировании вообще, я не знаю, что не так с этой Вставкой. Пожалуйста, может кто-нибудь помочь? большое спасибо.Вставьте в БД с защитой от инъекций

Мой PHP для вставки:

<?php 

$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "dbname"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
echo "<p>Connected successfully</p>"; 

$From = $_GET['From']; 
$To = $_GET['To']; 
$Type = $_GET['Type']; 
$text = $_GET['text']; 


$stmt = $conn->prepare("INSERT INTO orders (from_lang, to_lang, tex) 
VALUES (:fr, :to, :tex)"); 

$stmt->bindParam(':fr', $From); 
$stmt->bindParam(':to', $To); 
$stmt->bindParam(':tex', $text); 
$stmt->execute(); 


?> 
+2

Смешивание mysqli с PDO. 'bindParam' используется в pdo, тогда как' bind_param' используется в mysqli – Saty

+1

[Если вы собираетесь использовать PDO, пройдите полностью.] (http://jayblanchard.net/demystifying_php_pdo.html) –

+0

Я хочу использовать MySQLi. Я изменил 'bindParam' на' bind_param', и он все еще не работает. –

ответ

3

Вы смешивания базы данных API. Если вы хотите использовать MySQLi код будет выглядеть следующим образом:

<?php 

$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "dbname"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
echo "<p>Connected successfully</p>"; 

$From = $_GET['From']; 
$To = $_GET['To']; 
$Type = $_GET['Type']; 
$text = $_GET['text']; 


$stmt = $conn->prepare("INSERT INTO orders (from_lang, to_lang, tex) 
VALUES (?,?,?)"); 
$stmt->bind_param('sss', $From,$To,$text); 
$stmt->execute(); 


?> 

Примечание Я изменил заполнитель для каждого параметра ? и изменен на bind_param() функции, где, вместо отдельного вызова для каждого параметра (который вы можете сделать) Я использовал один вызов функции, в котором я указываю type of variable to be inserted, а затем переменную для каждого заполнителя.

+0

СПАСИБО ЛЕТ @JayBlanchard! Теперь это работает! Еще раз спасибо –

+0

Если ответ решил вашу проблему @NiniVanini, подумайте о принятии ответа. Вот как http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work, затем вернитесь сюда и сделайте то же самое с отметкой галочки/галочки, пока он не станет зеленым. Это сообщает об этом сообществу, решение найдено. В противном случае другие могут подумать, что вопрос все еще открыт и может захотеть опубликовать (более) ответы. * Добро пожаловать в Stack! * –

+0

Конечно, еще раз спасибо за помощь и ваш подход @JayBlanchard –

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