2014-11-13 3 views
0

Почему этот PDO не выполняется?PDO mysql select query not executing

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

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

«Q» не отражается.

+0

ваш запрос не работает, так как ': ' "+ $ testno +"'" 'вы кладете фактическое значение, но это должно быть строка, которую вы замените, как и в ответе Ричарда Бернарда. Посмотрите –

+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"]; 

Предполагая, что идентификатор целое число, если нет - заменить \PDO::PARAM_INT с \PDO::PARAM_STR.

+0

, которая определила $ testno как целое число – RichardBernards

+0

@RichardBernards id по соглашению int: -? –

+1

@AresDraguna не особенно верно ... Для некоторых целей (например, штрих-кодов и т.п.) и id может очень хорошо быть буквенно-цифровым или что-то еще ... Мое мнение было, это не могло быть выведено из вопроса со 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 Попробуйте еще раз ... во всей моей поспешности я забыл скобку – 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'];