2010-12-27 22 views
0

私は問題があります。私は生産ボックスでmysqlの結果を得ることはできませんが、開発ボックスではMySQL 5.3でPHP 5.3を使用します。データを取得できませんでした。mysql php pdo

$sd = $this->dbh->quote($sd); 
$si_sql = "SELECT COUNT(*) FROM tbl_wl_data 
      WHERE (site_domain = $sd OR siteDomainMasked = $sd);"; 
if($this->dbh->query($si_sql)->rowCount() > 0) { 
    //gets to here, just doesnt get through the loop 
    $sql = "SELECT pk_aid, site_name, site_css, site_img_sw, supportPhone FROM tbl_wl_data 
      WHERE (site_domain = $sd OR siteDomainMasked = $sd);"; 
    foreach($this->dbh->query($sql) as $wlsd) { //-- fails here 
     if($wlsd['wl_status'] != '1') { 
      require "_domainDisabled.php"; 
      exit; 
     } 
     $this->pk_aid = $wlsd['pk_aid']; 
     $this->siteTitle = $wlsd['site_name']; 
     $this->siteCSS = $wlsd['site_css']; 
     $this->siteImage = $wlsd['site_img_sw']; 
     $this->siteSupportPhone = $wlsd['supportPhone']; 
    } 
} else { 
    throw new ERR_SITE_NOT_LINKED; 
} 

これはloopkに入っているようですが、navicatでクエリを実行してデータを返します。本当に混乱

:S

+0

れますか? [PDOエラー](http://php.net/manual/en/pdo.error-handling.php)を出力しますか?行数とは何ですか? –

+0

@Pekka:foreach($ this-> dbh-> query($ sql)as $ wlsd){ –

+0

少なくとも$ sd = $ this-> dbh-> quote($ sd);はここではまったく役に立たない。 –

答えて

1

$si_sql = "SELECT COUNT(*) FROM tbl_wl_data WHERE (site_domain = $sd OR siteDomainMasked = $sd);"; 
if ($this->dbh->query($si_sql)->rowCount() > 0) ... 

ことは、常にあなたのテーブルには、コンテンツが存在しない場合でも、TRUEと評価されます。実際には、WHERE句に一致する行数を含むCOUNT(*)という名前の単一の行が常に返されます。

あなたは代わりにすることを第一ifをスクラップして実行する必要があります正確に指し示すうまくいかない何

$si_sql = "SELECT pk_aid, site_name, site_css, site_img_sw, supportPhone FROM tbl_wl_data WHERE (site_domain = $sd OR siteDomainMasked = $sd);"; 
if ($this->dbh->query($si_sql)->rowCount() > 0) { 
    // foreach here 
} 
+0

@netcoder:まだ何もありません。 –

+0

@Kyle:おそらく、テーブルが空であるか、クエリが無効であることを意味します。 var_dump 'rowCount()'には、おそらく0があります。 – netcoder

+0

@Netcoder:var_dump($ this-> dbh-> query($ si_sql) - > rowCount());戻り値int(1) –

関連する問題