PHP에서 더 이상 사용되지 않는 mysql 확장을 사용하여 준비된 문을 사용할 수 있습니까? 나는 mysqli 또는 PDO를 언제든지 얻을 수없고 사용자가 제공 한 텍스트에 대해 RLIKE 조회를 수행 할 서버가 있습니다. mysql_real_escape_string()이 사용될 것이지만 그것이 충분하지 않을까 우려했다.mysqli 또는 PDO가없는 PHP 준비 문
2
A
답변
2
다음은 PREPARE 및 EXECUTE 사용을 보여주는 사용되지 않는 mysql API를 사용하는 PHP 스크립트입니다. 나는 이것을 PHP 5.3.15와 MySQL 5.5.29로 테스트했으며, 나에게 적합하다. 그러나, 나는 그것을 권장하지 않습니다.
<?php
$x = 3;
$y = 4;
mysql_connect('localhost', 'root', 'xxxx') or die(mysql_error());
mysql_select_db('test');
mysql_query("SET @sql = 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse'");
mysql_query("PREPARE stmt FROM @sql");
mysql_query("SET @x = $x"); // SQL injection!
mysql_query("SET @y = $y"); // SQL injection!
$result = mysql_query("EXECUTE stmt USING @x, @y");
while ($row = mysql_fetch_assoc($result)) {
print $row["hypotenuse"] . "\n";
}
mysql_close();
내가 코멘트에서 언급 한 바와 같이, 미스 이런 종류의 준비 쿼리의 포인트, 당신이 당신의 SET 문에 가능한 신뢰할 수없는 콘텐츠를 보간하기 때문에.
PHP 설치를 수정하고 mysqli 또는 PDO_mysql 확장을 활성화해야하므로 실제 API 수준 준비 및 실행을 사용할 수 있습니다.
0
이것 좀 봐 : http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html
당신이 수동 PARAM 바인딩과 함께 준비된 문에 대한 SQL 구문을 가지고있다.
+0
downvoter는 의견이 일치하지 않는 이유에 대해 언급 할 수 있습니까? – jerrygarciuh
관련 문제
- 1. PHP에서 MySQLi 문 준비
- 2. 트랜잭션이있는 여러 mysqli 준비 문
- 3. MySQLi 준비 문 우수 사례
- 4. mySQLi 준비 문 : Fetch() 실패
- 5. PHP 준비 문 이해
- 6. PHP 준비 문
- 7. PHP 다중 준비 문
- 8. mysqli 절차와 준비 문 사이에 갇혀
- 9. Mysqli 준비 문 삽입 삽입하지 않음
- 10. PHP Mysqli bind_result는 준비 삽입 문 중에 경고를 발생시킵니다.
- 11. mysqli 준비 문, 결과 집합을 루프하는 방법
- 12. mysqli 준비 문 안에서 @ 사용자 변수 사용
- 13. MySQL 준비 대 PHP mysqli 준비
- 14. PHP PDO 준비 문
- 15. AES 암호화가 포함 된 Mysqli 준비 문
- 16. Mysqli 중첩 준비 문 - 검색 오류
- 17. PHP 준비 문 설명
- 18. PHP 문 준비 실패
- 19. PHP - MySQLi 문 준비는
- 20. PHP ::: 문 준비 ::: freeresult() ::: close()를
- 21. MySQL 준비 문 - 선택
- 22. fetch_all 또는 fetch_assoc MySQLi 문
- 23. PHP PDO 준비 문 업데이트
- 24. mysqli 준비 문에서 오류를 감지
- 25. 준비 문 패스
- 26. MySQLi 준비 결과 배열
- 27. 준비 여러 삽입 mysqli
- 28. Mysqli 준비 문 : 여러 WHERE 절 및 WHERE IN (배열)
- 29. mysqli : 삽입 및 업데이트 날짜에 대한 준비 문 오류?
- 30. LIKE에 사용할 때 MySqli 준비 문 오류가 발생했습니다.
사용중인 PHP 버전은 몇 통입니까? mysqli 없습니까? PHP의 5.0 버전에서 소개되었지만 PDO (표준은 나오지 않았지만 그 이후로 쉽게 설치 될 수 있습니다.)와 똑같습니다. –
서버의 상황이 좋지 않습니다. 내년에 표준 램프 박스를 마련하고 PDO로 이전 코드를 이전 할 계획이 있지만 현재 FreeBSD는 여러 버전의 구식이며 파손을 우려하여 업그레이드하거나 다시 컴파일하려고하지 않습니다. . – jerrygarciuh
PHP4.x 및 이전 버전 5.0의 경우 userland에 PDO가 다시 구현되었습니다. http://xpdo.org/ 또는 http://ge.tt/44rtW5a/v/0 참조 – mario