두 개의 매개 변수를 사용하는 함수를 작성하려고합니다. 테이블 이름과 매개 변수 목록을 조합하고 SELECT
쿼리를 작성합니다. bind_param을 여러 번 호출하는 메서드
SELECT * FROM users WHERE user='myTestUsername' AND pass='myTestPassword'
다음 선택된 행의 수를 반환
$params['user'] = 'myTestUsername';
$params['pass'] = 'myTestPassword';
echo $dbCon->countBy('users', $params);
이이 쿼리를 작성 (및 실행)해야합니다 여기
은 예입니다 2 가지 방법 :1) 주요 방법 (SQL 마술 발생) :
public function countBy($table, $params) {
$query = $this->buildQuery($table, $params);
$mySelect = $this->dbh->prepare($query);
$params = array_merge(array(count($params)), array_values($params));
call_user_func_array(array(&$mySelect, 'bind_param'), $params);
if ($mySelect) {
$mySelect->execute();
return $mySelect->rowCount();
}
return 0;
}
2) 지정된 매개 변수를 사용하여 쿼리를 작성하는 방법 :
public function buildQuery($table, $params) {
$i = 0;
$where = '';
if (count($params) > 0) {
$query = 'SELECT * FROM ' . $table . ' WHERE ';
foreach(array_keys($params) as $pList) {
$i++;
$where .= $pList . '=?' . ($i<count($params) ? ' AND ' : '') ;
}
$query .= $where;
// output is like : SELECT * FROM users WHERE user=? AND pass=?
return $query;
}
return null;
}
제 2 방법은 잘 작동하지만, 나는 1 일에 몇 가지 문제가 있습니다. 그리고 그것은 "call_user_func_array"메소드의 사용과 관련이 있습니다.
나는 정말로 내가 잘못한 것을 보지 못했다 ... 어떤 생각?
call_user_func_array과 함께 "솔루션"here에서 찍은, 그러나 나는이 부분에 대해 확실하지 않다 :
내 코드에서$params = array_merge(array(str_repeat('s', count($params))), array_values($params));
나는 이런 식으로 사용하여 시도 :
$params = array_merge(array(count($params)), array_values($params));
하지만, 여전히 아무것도 ...
그냥 - mysqli가 아니라'PDO'를 사용하고 있습니까? –
그들은 * mysqli를 사용하고 있지만 pdo로 태그가 붙어 있습니다 –
나는 PDO를 사용하고 있습니다 ... –