編集: 明確にするために、PDOをMySQLデータベースに使用しています
わかりました、クエリに少し問題があります。グーグルと「スタックオーバーフロー」を試しましたが、役に立ちませんでした。ownerid = '1' であるdownload storeというテーブルからすべてのレコードを選択しようとしています。
//Partial code
$sql="SELECT * FROM boughtdownloads WHERE ownerid=:userid";
$prep=$GlobalDB->prepare($sql);
$prep->bindParam(':userid',$userid,PDO::PARAM_INT);
$prep->execute();
if($prep->rowCount()=='0')
{
return 'Error with get owned IDS';
}
else
{
foreach($prep->fetchAll()as $res)
{
$owned[]=$res['fileid'];
}
$owned=implode(",",$owned);
return $owned;
}
これは期待どおりに機能し、 1,2を返します
$OwnedIDS=$this->GetOwnedIDS($userid); // The same code as above ^
//This query doesn't work, even with the following:
//$OwnedIDS="1,2"; //Which is what's expected, and returned, from the above
$sql="SELECT * FROM downloadstore WHERE fileid IN (:owned)";
$prep=$GlobalDB->prepare($sql);
$prep->bindParam(':owned',$OwnedIDS);
$prep->execute();
if($prep->rowCount()=="0")
{
return 'Error with remaining disk space';
}
else
{
echo $prep->rowCount();
}
downloadstore テーブル
に 2 つのレコードがあるにもかかわらず、これは 1 つのレコードのみを返します$GlobalDB
= pdo 接続文字列 (これは動作します)
$userid = $_SESSION
、これは「1」に等しい
【ダウンロードストア画面】
[BoughtItems スクリーンショット]
ご覧のとおり、各テーブルには有効なファイル ID を持つ 2 つのレコードがあります。
ただし、IN 句を使用してダウンロード ストアをクエリする場合、プルされるレコードは 1 つだけです。
誰か助けてくれませんか?それはおそらく私が見落としているばかげた単純なものですが、トリプルチェックしたところ、クエリまたはテーブルに何も問題がないと確信しています(明らかにありますが)。
ありがとう、ロブ