2012-12-03 3 views
1

안녕하세요, MySQLi를 MySQLi로 변환하는 것이 더 안전하기 때문에 AFAIK MySQLi는 그 자체로 더 안전하지 않습니다. mysql to mysqli convert

내가 선택한 답변이 주제 컨버터를 사용 : 코드가 작동,하지만 지금은 정확히 무엇을 해야할지하지 않습니다 Updating from MYSQL to MYSQLI

을하고, 나는 내가 querys하지만 정확하게 준비하는 것을 알고 어떻게 준비해야할지 모르겠다. ...

예를 들어 5 개 이상의 PHP 변수가있는 INSERT 쿼리를 사용하면 괜찮습니까? 어떻게해야합니까? 내가 찾은 모든 예제는 하나의 변수로 ... 그리고 쿼리 바로 전에 줄에서 준비합니까?

너무 혼란 스럽습니까? 미안하지만 이것은 매우 기본적인 것들이지만 이것과 함께 완전히 멍청한 데다가 내가 원하는 것은 지침이 있습니다. ...

+1

"보안"을위한 업그레이드가 없습니다. 모든 것은 프로그래머의 능력과 지식에 달려있다. mysqli 나 pdo를 사용하면 즉시 "보안이 강화"되지 않습니다. mysql은 자신이하는 일을 안다면 완벽하게 안전 할 수있다. mysql이 더 이상 사용되지 않으므로 대신 pdo 또는 mysqli로 업그레이드하십시오. –

+0

... 그리고 mysql이 prepared statement와 같은 편리한 기본 기능없이 코드하도록 강요하기 때문에. –

+1

OP를 노크하지 마십시오. 그는 옳은 질문을 정확하게하고 있으며 일을 올바르게하고 싶습니다. 그것을 격려하자. 어쨌든, 예전 mysql 라이브러리에는 준비된 쿼리와 같은 새로운 기능을 사용할 계획이 없더라도 실제로이를 피할 수있는 몇 가지 보안 문제가 있습니다. – SDC

답변

4

다음은 여러 매개 변수가있는 INSERT 쿼리의 예제입니다.

/* create a prepared statement */ 
if ($stmt = $mysqli->prepare("INSERT INTO mytable (field1, field2, field3) VALUES(?, ?, ?)")) { 

    /* bind parameters for markers */ 
    $stmt->bind_param("sss", $field1, $field2, $field3); 

    /* execute query */ 
    $stmt->execute(); 

    /* close statement */ 
    $stmt->close(); 
} 

당신이 $field1, $field2을 볼 수 있듯이, 그리고 $field3은 (주 세 s) 문자열로 구속되고 쿼리에서 ?을 대체합니다.

Bind param types :

전 - 이중
S를 입력했다 대응 가변 - - 정수
D 입력 변수있다 해당 변수에 대응하는 문자열을 입력 갖는다
B - 변수에 대응하는 블롭되고 전송 될 패킷 있음

+0

그리고 그것이 문자열이 아니라면? 일부 정수와 수레는 i/f입니까? –

+1

다른 유형의 대답을 업데이트했습니다. – MrCode

+0

감사합니다 :) 다른 어떤 쿼리를 작성하는 것과 마찬가지로, 예와 같이 변수를 바꿉니 까? stmt를 매번 닫아야합니다. –