2014-04-29 2 views
0

SQLSTATE [HY093] : 유효 파라미터 번호 : I 사용할 수

WHERE id_prekes = :prekes_id 
AND tiekejas = :tiekejas 

$ prekes_id = 3;

$ tiekejas = Silberauto, UAB; 나는 오류가 사라

WHERE id_prekes = 3 
AND tiekejas = "Silberauto, UAB" 

을 사용하고 때 (번호 : 잘못된 매개 변수 번호 SQLSTATE [HY093])하지만

나는 오류를 받고 있어요. 내 스크립트

<?php 
$tiekejas = $_GET['tiekejas']; 
$prekes_id = $_GET['prekes_id']; 

echo // "<script type='text/javascript'>alert('$tiekejas');</script>"; 

$username='root'; 
$password='pass'; 
try { 
    $conn = new PDO('mysql:host=localhost;dbname=univer', $username, $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt = $conn->prepare('SELECT vnt_kaina 
FROM tiekeju_prekes 
INNER JOIN tiekejai ON tiekeju_prekes.id_tiekejo = tiekejai.id 
WHERE id_prekes = :prekes_id 
AND tiekejas = :tiekejas 
       '); 

$stmt->bindParam(':tiekejas', $tiekejas, PDO::PARAM_INT); 
$stmt->bindParam(':prekes_id', $prekes_id, PDO::PARAM_INT); 

    $stmt->execute(array('tiekejas' => $tiekejas,'prekes_id' => $prekes_id)); 

    while($row = $stmt->fetch()) { 
     echo $row['vnt_kaina']." LT "; 
    } 
} catch(PDOException $e) { 
    echo 'KLAIDA: ' . $e->getMessage(); 
} 
+0

'$ tiekejas'와'$ prekes_id'에는 무엇이 있습니까? 그들을 에코합니다. – potashin

+0

$ tiekejas = UBAB Silberauto $ prekes_id = 3; – shizaa

+0

'$ stmt-> bindParam (': tiekejas', $ tiekejas, PDO :: PARAM_INT);'$ stmt-> bindParam (': tiekejas', $ tiekejas, PDO :: PARAM_STR);'문자열을 다루기 때문에''Silberauto, UAB ''@shizaa 매뉴얼보기 http://www.php.net/manual/en/pdostatement.bindparam.php –

답변

0

사용 중 하나

$stmt->bindParam(':tiekejas', $tiekejas, PDO::PARAM_STR); 
$stmt->bindParam(':prekes_id', $prekes_id, PDO::PARAM_INT); 

또는

$stmt->execute(array('tiekejas' => $tiekejas,'prekes_id' => $prekes_id)); 

는 또한 PDO::PARAM_에 주목 - 당신이 PDO::PARAM_STR하지 PDO::PARAM_INT를 사용해야하므로 $tiekejas은 문자열입니다.

관련 문제