2012-11-09 3 views
-2

이전의 mysql 스크립트를 가져 와서보다 안전한 PDO 형식으로 변환하려고 시도했습니다. 예전 스크립트에서 필드를 선택하여 테이블을 입력 한 다음 변수에 넣습니다. $ Product = $ row [ 'product']; IF 및 ELSE 문을 실행하십시오. 사용자의 제품이 = 내가 에코 싶어 소니 "당신은뿐만 아니라 이들에 관심이있을 수 있습니다"경우 여기 PDO 문에 지금PDO가 행 결과를 가져 오지 않습니다.

<?php 
$connect = mysql_connect("host","username","password"); 
mysql_select_db("dbname"); 

$username = $_SESSION['username']; 

$q = "SELECT product FROM users WHERE username = ('$username')"; 

$r  = mysql_query($q); 
$row  = mysql_fetch_assoc($r); 
$Product = $row['product']; 

if($Product == "sony") 
{ 
    echo "You may be interested in these as well"; 
} 
?> 

아래에있는 내 예제 코드는, 당신은 같은 종류의 프로그램을 실행할 수 없습니다 것입니다 이전처럼 진술처럼. 내 쿼리에서 선택되는 행의 제품에 변수를 할당 시도하지만 오류 얻을 : 여기

Cannot use object of type PDOStatement as array

것은 내가에서 필드 "제품"을 전달할 수 있습니다 어떻게 내 코드

<?php 
session_start(); 

$db = new PDO('mysql:host=host;dbname=dbname;charset=UTF-8', 'username', 'password'); 

$username = $_SESSION['username']; 
$getProduct = $db->query("SELECT product FROM users WHERE username = '$username'"); 
$getProduct->execute(); 

$Product = $getProduct['product']; 

if($Product == "sony") 
{ 
    echo "You may be interested in these as well"; 
} 

?> 

입니다 테이블에서 PDO와 변수를 선택합니다 if product = "sony"echo "message";?

나는 또한이 문장을 성공으로 대체하려고 시도했다.

<?php 
$query = $db->query("SELECT product FROM users WHERE username = '$username'"); 
$query->execute(); 

$Product = $query ->fetchAll(PDO::FETCH_ASSOC); 

$Product = $getProduct['product']; 

if($Product == "sony") 
{ 
    echo "You may be interested in these as well"; 
} 

?> 

매뉴얼은 이전 문장을보다 최신의 안전한 문장으로 변환하는 것과 관련하여 그리 좋지 않으므로 감사합니다. 감사합니다.

+0

세 번째 비트가 작동하지 않는 것은 당연합니다. '$ getproduct'는 거기에 존재하지 않습니다. – Daedalus

답변

3

사용

$query->fetch(PDO::FETCH_ASSOC); 

당신은 그래서 첫 번째를 사용하여 하나 개의 행을 기대하고 모든 행

를 얻기 위해 1 행과

$query->fetchAll(PDO::FETCH_ASSOC); 

를 얻을 수 있습니다.

+0

고마워요! 나는 당신이 말했듯이 첫 번째 것을 사용했고 매력처럼 일했습니다! 또한 $ getProduct를 정의해야합니다. 다시 한 번 감사드립니다! –

관련 문제