2016-07-09 5 views
1

PHPとMySQLのクエリが間違った情報を返します。このクエリの目的のためにPHPを使用した不安定なMySQLの結果

- INT

$sql = " 
SELECT * 
    FROM 
    (SELECT * 
     FROM 100_advertisers_campaigns 
     WHERE vendor_owner IN($PortalAdvertiserOne,$PortalAdvertiserTwo) 
      AND ad_section_news = 'Y' 
      AND ad_position = 2 
     ORDER 
      BY RAND() 
     LIMIT 1 
    ) x 
ORDER 
    BY ad_id"; 

クエリは「ad_positionは」2でレコードだけを返すことになっている場合を除き、完璧なすべてのものを返します$ PortalAdvertiserOneと$ PortalAdvertiserTwo、このクエリは、私からレコードを返します1、2、3、4のテーブルがあります。クエリのその部分をフィルタリングしていないようです。

何が欠けていますか?

+0

を丸める()を試してみてください? –

+0

フィールドはINT(長さ11) – Cavemanharris

+0

なぜ単一引用符を使用するのですか?それは重要かもしれない –

答えて

2

はad_positionのフィールドタイプは何または

$sql = "SELECT * FROM (SELECT * FROM 100_advertisers_campaigns WHERE (vendor_owner = $PortalAdvertiserOne or vendor_owner = $PortalAdvertiserTwo and ad_section_news = 'Y') and ad_position = '2' ORDER BY RAND() LIMIT 1) x ORDER BY ad_id"; 
+0

ありがとう!それは今働く! – Cavemanharris

+1

この解決策を単純化するために、ブレースされた_OR_部分を 'WHERE vendor_owner IN($ PortalAdvertiserOne、$ PortalAdvertiserTwo)AND ... 'に変更することができます。 –

+1

良いキャッチ@デニス – Edu

関連する問題