2016-07-22 6 views
-4

나를 도와주세요. DB에 삽입 공격 방지 기능을 넣으려고합니다. w3schools에서 예제를 찾았지만 저에게는 효과가 없습니다. 연결이 올바르게 작동합니다. SQL과 프로그래밍에 익숙하지 않기 때문에 Insert에 무엇이 잘못되었는지 알지 못합니다. 제발, 아무도 도와 줄 수 있니? 고마워. 삽입삽입 공격 방어로 DB에 삽입

내 PHP : 당신은 데이터베이스 API의 혼합하고

<?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'은 mysqli에서 bind_param이 사용되는 동안 pdo에서 사용됩니다. – Saty

+1

[PDO를 사용한다면, 끝까지 가십시오.] (http://jayblanchard.net/demystifying_php_pdo.html) –

+0

사용하고 싶습니다. mysqli. 나는'bindParam'을'bind_param'으로 바꿨고 여전히 작동하지 않습니다. –

답변

3

. 당신은 같을 것이다 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 다음 각 placeholder에 대한 변수를 지정하는 단일 함수 호출을 사용했습니다.

+0

감사합니다. @JayBlanchard! 이제 작동합니다! 다시 고마워요 –

+0

답변으로 문제가 해결 된 경우 @NiniVanini, 답변 수락을 고려하십시오. 다음은 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work가 여기로 돌아와서 진드기/체크 표시가 녹색으로 바뀔 때까지 동일한 작업을 수행하는 방법입니다. 이것은 커뮤니티에 알리고 해결책을 찾았습니다. 그렇지 않으면, 다른 사람들은 그 질문이 여전히 열려 있다고 생각할 수 있으며 (더) 답변을 게시하고 싶을 수도 있습니다. * 스택에 오신 것을 환영합니다! * –

+0

물론 도움과 접근 방법에 대해 다시 한번 감사드립니다. @JayBlanchard –