«prepared-statement» 태그된 질문

준비된 문 (또는 매개 변수가있는 문)은 성능을 향상시키고 SQL 주입 공격을 완화하는 데 사용되는 미리 컴파일 된 SQL 문입니다. 준비된 명령문은 많은 인기있는 관계형 데이터베이스 관리 시스템에서 사용됩니다.

21
배열을 IN () 조건에 바인딩 할 수 있습니까?
PDO를 사용하여 값 배열을 자리 표시 자에 바인딩 할 수 있는지 궁금합니다. 여기서 유스 케이스는 IN()조건 과 함께 사용할 값 배열을 전달하려고합니다 . 다음과 같이 할 수 있기를 바랍니다. <?php $ids=array(1,2,3,7,8,9); $db = new PDO(...); $stmt = $db->prepare( 'SELECT * FROM table WHERE id IN(:an_array)' ); $stmt->bindParam('an_array',$ids); $stmt->execute(); ?> 그리고 …

30
PreparedStatement IN 절 대안?
SQL 주입 공격 보안 문제로 인해 여러 값에서 지원되지 않는의 IN인스턴스와 함께 SQL 절 을 사용하는 가장 좋은 해결 방법은 다음 과 java.sql.PreparedStatement같습니다.? 자리 표시자는 값 목록이 아닌 하나의 값을 나타냅니다. 다음 SQL 문을 고려하십시오. SELECT my_column FROM my_table where search_column IN (?) 사용 preparedStatement.setString( 1, "'A', 'B', 'C'" );은 …

6
준비된 명령문에서 "like"와일드 카드 사용
mysql 데이터베이스 쿼리를 실행하기 위해 준비된 명령문을 사용하고 있습니다. 그리고 나는 일종의 키워드를 기반으로 검색 기능을 구현하고 싶습니다. 이를 위해서는 LIKE키워드 를 사용해야 합니다. 또한 이전에 준비된 명령문을 사용했지만 LIKE다음 코드에서 어디에 추가 해야하는지 함께 사용하는 방법을 모르겠습니다 'keyword%'. pstmt.setString(1, notes)그대로 (1, notes+"%")또는 이와 비슷한 방식 으로 직접 사용할 수 …

9
준비된 명령문이 SQL 삽입 공격으로부터 어떻게 보호 할 수 있습니까?
준비된 명령문 은 SQL 주입 공격을 방지하는 데 어떻게 도움이 됩니까? 위키피디아의 말 : 준비된 명령문은 나중에 다른 프로토콜을 사용하여 전송되는 매개 변수 값이 올바르게 이스케이프 될 필요가 없으므로 SQL 삽입에 대해 복원력이 뛰어납니다. 원래 명령문 템플리트가 외부 입력에서 파생되지 않은 경우 SQL 삽입이 발생할 수 없습니다. 이유를 잘 알 …

13
PreparedStatement의 SQL을 어떻게 얻을 수 있습니까?
다음과 같은 메소드 서명이있는 일반적인 Java 메소드가 있습니다. private static ResultSet runSQLResultSet(String sql, Object... queryParams) 연결을 열고 PreparedStatementsql 문을 사용하여 변수를 작성하고 queryParams변수 길이 배열 의 매개 변수를 실행하고 실행하고 ResultSet(a CachedRowSetImpl)를 캐시 하고 연결을 닫은 다음 캐시 된 결과 세트를 리턴합니다. 오류를 기록하는 방법에 예외 처리가 있습니다. 디버깅에 매우 …

22
PDO 준비 단일 쿼리에서 여러 행을 삽입합니다
현재 MySQL 에서이 유형의 SQL을 사용하여 단일 쿼리에 여러 행의 값을 삽입하고 있습니다. INSERT INTO `tbl` (`key1`,`key2`) VALUES ('r1v1','r1v2'),('r2v1','r2v2'),... PDO에 대한 독서에서 사용 준비된 문은 정적 쿼리보다 더 나은 보안을 제공해야합니다. 따라서 준비된 문을 사용하여 "하나의 쿼리를 사용하여 여러 행의 값 삽입"을 생성 할 수 있는지 알고 싶습니다. 그렇다면 어떻게 …


1
mysqli_fetch_assoc ()는 매개 변수 / 멤버 함수 호출 bind_param () 오류를 예상합니다. 실제 mysql 오류를 얻고 수정하는 방법은 무엇입니까?
내 로컬 / 개발 환경에서 MySQLi 쿼리가 정상적으로 수행되고 있습니다. 그러나 웹 호스트 환경에 업로드하면 다음 오류가 발생합니다. 치명적 오류 : 비 객체의 bind_param () 멤버 함수 호출 ... 다음은 코드입니다. global $mysqli; $stmt = $mysqli->prepare("SELECT id, description FROM tbl_page_answer_category WHERE cur_own_id = ?"); $stmt->bind_param('i', $cur_id); $stmt->execute(); $stmt->bind_result($uid, $desc); 내 …


2
PreparedStatement를 여러 번 재사용
풀없이 단일 공통 연결로 PreparedStatement를 사용하는 경우 준비된 명령문의 기능을 유지하는 모든 dml / sql 작업에 대해 인스턴스를 다시 만들 수 있습니까? 내말은: for (int i=0; i<1000; i++) { PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setObject(1, someValue); preparedStatement.executeQuery(); preparedStatement.close(); } 대신에: PreparedStatement preparedStatement = connection.prepareStatement(sql); for (int i=0; i<1000; i++) { preparedStatement.clearParameters(); …

6
자바 : PreparedStatement를 사용하여 MySQL에 여러 행 삽입
Java를 사용하여 한 번에 여러 행을 MySQL 테이블에 삽입하고 싶습니다. 행 수는 동적입니다. 과거에는 ... for (String element : array) { myStatement.setString(1, element[0]); myStatement.setString(2, element[1]); myStatement.executeUpdate(); } MySQL 지원 구문을 사용하도록 최적화하고 싶습니다. INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...] 그러나를 사용하면 PreparedStatement얼마나 많은 요소 array가 …

5
PreparedStatement setNull (..)
Java PreparedStatement는 Null 값을 명시 적으로 설정할 수있는 가능성을 제공합니다. 이 가능성은 다음과 같습니다. prepStmt.setNull(parameterIndex, Types.VARCHAR); 이 호출의 의미는 널 매개 변수와 함께 특정 setType을 사용할 때와 동일합니까? prepStmt.setString(null); ?


8
PHP-IN 절 배열과 함께 PDO 사용
PDO를 IN사용하여 값에 배열을 사용하는 절이 있는 문을 실행 하고 있습니다. $in_array = array(1, 2, 3); $in_values = implode(',', $in_array); $my_result = $wbdb->prepare("SELECT * FROM my_table WHERE my_value IN (".$in_values.")"); $my_result->execute(); $my_results = $my_result->fetchAll(); 위의 코드는 완벽하게 작동하지만 내 질문은 이것이 왜 그렇지 않습니다. $in_array = array(1, 2, 3); $in_values …

3
Oracle JDBC Optimization : 스프링 부트 애플리케이션에서 PreparedStatement 캐싱 사용
Oracle 데이터베이스에 연결된 Spring Boot REST 응용 프로그램이 있습니다. JdbcTemplate을 사용하여 JDBC를 사용하고 있습니다. Oracle 데이터베이스 특성은 다음 3 가지 application.properties 설정을 통해 얻습니다 . spring.datasource.url spring.datasource.username spring.datasource.password 이 응용 프로그램은 HikariCP를 사용하고 있습니다. HikariCP 웹 사이트에서 JDBC 드라이버가 최상의 설정이므로이 풀이 PreparedStatements를 캐시하지 않는다는 것을 알게되었습니다. 이제, 이것을 보장하기 …
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.