[SQL] MySQLi은 IN 연산자로 제표를 작성
SQLMySQLi은 IN 연산자로 제표를 작성
나는 IN 연산자를 사용하여 데이터베이스에서 일부 행을 선택해야합니다. 나는 준비된 문을 사용하고 싶어. 이건 내 코드입니다 :
<?php
$lastnames = array('braun', 'piorkowski', 'mason', 'nash');
$in_statement = '"' . implode('", "', $lastnames) . '"'; //"braun", "piorkowski", "mason", "nash"
$data_res = $_DB->prepare('SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN (?)');
$data_res->bind_param('s', $in_statement);
$data_res->execute();
$result = $data_res->get_result();
while ($data = $result->fetch_array(MYSQLI_ASSOC)) {
...
}
?>
그러나 모든 데이터 비록 반환 아무것도 database.And 하나 더 존재하지 : 내가 쿼리에 직접 $ in_statement을 통과하고 실행하면 데이터가 반환됩니다. preparing.I에 문제가 나타납니다 구글에서 질문을 찾고 있었다하지만 '성공하지 못한 그래서. 어떤 것은? 도움을 주셔서 감사합니다 내 코드를 잘못!
해결법
-
==============================
1.나는 최근에 내 질문에 대한 해결책을 발견했습니다. 아마 그것을 할 수있는 가장 좋은 방법은 아니지만, 좋은 작품! 내가 틀렸다는 것을 증명 해봐:)
나는 최근에 내 질문에 대한 해결책을 발견했습니다. 아마 그것을 할 수있는 가장 좋은 방법은 아니지만, 좋은 작품! 내가 틀렸다는 것을 증명 해봐:)
<?php $lastnames = array('braun', 'piorkowski', 'mason', 'nash'); $arParams = array(); foreach($lastnames as $key => $value) //recreate an array with parameters explicitly passing every parameter by reference $arParams[] = &$lastnames[$key]; $count_params = count($arParams); $int = str_repeat('i',$count_params); //add type for each variable (i,d,s,b); you can also determine type of the variable automatically (is_int, is_float, is_string) in loop, but i don't need it array_unshift($arParams,$int); $q = array_fill(0,$count_params,'?'); //form string of question marks for statement $params = implode(',',$q); $data_res = $_DB->prepare('SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN ('.$params.')'); call_user_func_array(array($data_res, 'bind_param'), $arParams); $data_res->execute(); $result = $data_res->get_result(); while ($data = $result->fetch_array(MYSQLI_ASSOC)) { ... } $result->free(); $data_res->close(); ?>
from https://stackoverflow.com/questions/11938876/mysqli-prepared-statements-with-in-operator by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 오라클의 기존 테이블에 (또는 GET)는 DDL 스크립트를 생성 할 수 있습니까? I가이 하이브에서 그들을 다시 작성 (0) | 2020.06.17 |
---|---|
[SQL] 저장하는 룩업 테이블 아이디의 순수 데이터 간의 의사 (0) | 2020.06.16 |
[SQL] VB.NET에서 문 준비 (0) | 2020.06.16 |
[SQL] Oracle- 분할 문자열 쉼표 (문자열에 공백이 연속 쉼표를 포함)로 구분 (0) | 2020.06.16 |
[SQL] ORA-00933은 : SQL이 제대로 종료되지] 명령 (0) | 2020.06.16 |