2014-11-13 2 views
0

이 PDO가 실행되지 않는 이유는 무엇입니까?PDO mysql 선택 쿼리가 실행되지 않음

$statement = $db->prepare("select * from quest where id = :'"+$testno+"'"); 
$statement->execute(); 
$row = $statement->fetch(PDO::FETCH_ASSOC); 

echo "Q:".$row["questions"]; 

"Q"는 표시되지 않습니다.

+0

'때문에 쿼리가 작동하지 않습니다 당신이 실제 값을 넣어 ' "+ $ testno +"' "'하지만 그건이어야합니다 RichardBernards의 응답 에서처럼 대체 할 문자열. –

+0

'+'는 숫자에만 해당됩니다. 문자열 연결 연산자는'.'입니다. – HerrSerker

+0

@HerrSerker id는 숫자입니다. – X10nD

답변

4

당신은 준비된 SQL에 이름이 자리를 넣어 원하는 값 이후에 바인딩해야합니다

$statement = $db->prepare("select * from quest where id = :id"); 
$statement->bindParam(':id', $testno, \PDO::PARAM_INT); 
$statement->execute(); 
$row = $statement->fetch(PDO::FETCH_ASSOC); 

echo "Q:".$row["questions"]; 

가정 ID가 정수가 아닌 경우 - \PDO::PARAM_STR\PDO::PARAM_INT를 교체합니다.

+0

을 잊어 버렸습니다. – RichardBernards

+0

@RichardBernards id는 규칙 상 int로 - - –

+1

@AresDraguna는 사실이 아닙니다 ... 일부 용도 (바코드 등)의 경우, 이드는 영숫자 일 수도 있고 뭔가 다른 것일 수도 있습니다. 제 요지는 100 % 확실성을 가진 질문에서 추론 할 수 없었습니다 ... – RichardBernards

1
$statement = $db->prepare("select * from quest where id = :testno"); 
$statement->execute(array(':testno'=>$testno)); 
$row = $statement->fetch(PDO::FETCH_ASSOC); 

echo "Q:".$row["questions"]; 
+0

구문 분석 오류 : /Library/WebServer/Documents/file.php의 20 행 구문 분석 오류 :::: $ statement-> execute (array (': testno'=> $ testno); – X10nD

+0

@ X10nD 다시 시도하십시오 ... 모든 서두름에서 $ testno를 정수로 정의한 대괄호 – RichardBernards

0

X10nD @, 간단하게 ... 코드를 아래와 같이 사용 :

$query = "SELECT * FROM quest WHERE id = ?"; 
$statement = $db->prepare($query); 
$statement->bindParam(1,$testno); 
$statement->execute(); 
$row = $statement->fetch(PDO::FETCH_ASSOC); 

echo "Q:".$row['questions']; 
관련 문제