2014-03-29 3 views
3

은 그것을 한 번 바인딩으로 준비된 mysqli -statement 여러 번에 하나 개의 매개 변수를 사용할 수 있습니까? 이준비 mysqli 문에 하나 개의 매개 변수를 여러 번 사용

$stmt = $mysqli->prepare(SELECT * FROM user WHERE age BETWEEN ?1 - 2 AND ?1 + 2); 
$stmt->bind_param('i', $myAge); 

같은
뭔가 나는이 PDO 가능합니다 생각하지만, 나는 mysqli으로이 작업을 수행하는 방법을 konw하지 않습니다.

+0

일반 PDO에서는 불가능합니다. – mario

+0

불행히도 없습니다. PDO는 매개 변수를 명명했습니다. MySQLi는 그렇지 않습니다. 따라서 두 번 바인딩해야합니다. – Tularis

+0

확인. 그래서 저는 사실 매개 변수를 여러 번 바인딩해야합니다. 그 문제는 없지만 이것을 할 수있는 더 좋은 방법은 없다고 생각했습니다. – AbcAeffchen

답변

3

을 바로 사용할 수 있습니다 질문을 닫으려면

대답은 아니요입니다.

매개 변수를 한 번만 으로 바인딩하려면 쿼리에서 여러 번 사용하고 PDO를 사용해야하며 특수 구성이 필요할 수도 있습니다.

그러나 this 위 답변이나 this에 따르면 mysqli 대신 PDO를 사용하는 데 더 많은 이유가있는 것으로 보입니다.

그러나 확실한 해결 방법이 있습니다. 이 질문에 대한 다른 대답을보십시오.

0

bind_param없이 execute를 사용할 수 있습니다. 트릭을 할 array_fill 사용하고 있습니다.

$stmt->execute(array_fill(0, 1, $myage)); 
당신은, 당신이 사용할 수있는, 당신이 채우기 위해 3 개 값이 있다고 가정 문에 따라 array_fill 값을 편집 할 수 있습니다

:

$stmt->execute(array_fill(0, 2, $myage)); 
+0

당신은 PDO에서 할 수 있지만 mysqli에서는 할 수 없습니다. –

+0

http://de2.php.net/manual/en/mysqli-stmt.execute.php에 따르면 이것은 mysqli에서 작동하지 않습니다. – AbcAeffchen

2

이 대신

$stmt = $mysqli->prepare(SELECT * FROM user WHERE age BETWEEN ? - 2 AND ? + 2); 
$stmt->bind_param('ii', $my_age, $my_age); 
+2

. 이게 내가하는 일이 아니야. 제 특별한 경우에는 매개 변수가 네 번 필요합니다. 같은 것을 반복해서 바인딩하는 대신 더 좋은 방법이 있습니다. – AbcAeffchen