2014-12-01 4 views
1

mysqli 스타일 PHP 쿼리를 사용하는 데 익숙하지만 더 많은 PDO를 사용하려고합니다. 나는 그것을 사용하는 방법의 대부분을 이해한다고 생각하지만, 때때로 나는 나를 던지게하는 어떤 것이 올랐다. PDO가 mysql 쿼리 결과를 반환하지 않습니다.

그래서 나는 MySQL 데이터베이스에 기본 SELECT 질의를하고, 그리고 난 반환 된 배열이 비어있는 이유를 이해하지 않는 쿼리

PHP

try { 
    $dbhandle = new PDO("mysql:dbname = {$dbname}; host = {$dbhost}; port = {$dbport}", $dbuser, $dbpass); 
} catch (PDOException $e) 
{ 
    echo "Error when creating Database Handle. Error: " .$e; 
} 

$sql = $dbhandle->prepare("SELECT projectName FROM `__projects`"); 
$sql->execute(); 

$projectList = $sql->fetch(PDO::FETCH_BOTH); 

$size = sizeof($projectList); 
echo $size; 

에서 어떤 결과를 얻을 캔트. 내가 실수하고 있니? 나는 mysqli 메소드를 사용할 때 같은 쿼리를 사용하여 결과를 반환 할 수 있으므로 사용자/패스가 괜찮음을 알고있다.

내가 뭘 잘못하고 있니?

+0

mysql:host=localhost;port=3307;dbname=testdb 

http://php.net/manual/en/ref.pdo-mysql.connection.php

덕분에 왜 주위에 따옴표 테이블 이름? phpAdmin 또는 다른 DB 관리 도구에 대한 쿼리를 시도 했습니까? –

+0

@MarcoMura 테이블 이름에 대한 정확한 인용 부호입니다. – tadman

+0

@tadman 제 쿼리는 그것들 없이도 작동하기 때문에 특별하지 않다면 ... 필요하지 않습니다 =) –

답변

0

쿼리를 실행하려면 먼저 쿼리가 같지 않거나 false가되도록 실행해야합니다. 그렇게하면 스크립트를 디버깅 할 수 있습니다. 쿼리를 즉시 실행하는 대신 준비하십시오.

다음은 'ID가'1

<?php 
// Connection data (server_address, database, name, poassword) 
$hostdb = 'localhost'; 
$namedb = 'tests'; 
$userdb = 'username'; 
$passdb = 'password'; 

try { 
// Connect and create the PDO object 
    $conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb); 
    $conn->exec("SET CHARACTER SET utf8");  // Sets encoding UTF-8 

    // Define and perform the SQL SELECT query 
    $sql = "SELECT * FROM `sites` WHERE `id` IN(1, 3)"; 
    $result = $conn->query($sql); 

    // If the SQL query is succesfully performed ($result not false) 
    if($result !== false) { 
    $cols = $result->columnCount();   // Number of returned columns 

echo 'Number of returned columns: '. $cols. '<br />'; 

// Parse the result set 
foreach($result as $row) { 
    echo $row['id']. ' - '. $row['name']. ' - '. $row['category']. ' - '. $row['link']. '<br />'; 
} 
} 

$conn = null;  // Disconnect 
} 
catch(PDOException $e) { 
echo $e->getMessage(); 
} 
?> 
1

3. 연결 문을 조정 해보십시오 인 행을 선택합니다. 나는 순서가에 영향을 미칠 것인지 확실하지 않다, 그러나 문서에서, 그것과 비슷해야합니다,

앤드류

관련 문제