いくつかのステートメントを含むSQLクエリがあります。それ:
- ユーザー変数を設定します
- ストアドプロシージャを呼び出します
- 別のストアドプロシージャを呼び出す
- いくつかのデータを選択します
同じユーザーのMySQLWorkbenchでテストしたので、クエリが正しいことはわかっています。クエリは次のとおりです。
set @current_post = 535; /* 535 for testing, this will be a variable */
call under_user_type(@currrent_post, @user_type, @user_id);
call get_category(@current_post, @category);
select p.post_title, p.post_name,
(
swell_wp.post_score(p.ID)
) as score,
(
swell_wp.is_under_user(p.ID, @user_type, @user_id)
) as under_user,
(
swell_wp.is_under_category(p.ID, @category)
) as under_category
from wp_posts as p
where p.post_type = 'post'
and p.id != @current_post
and p.post_status = 'publish'
having (
under_user = true
or under_category = true
)
order by score desc;
これは文字列に格納されているだけです:$sql
。次に、PHPでこれを行います。
$query = new MySQLi(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$query->multi_query($sql);
do {
$query->next_result();
} while( ! $result = $query->use_result() );
print_r($result);
これは結果オブジェクトを出力しますが、空のオブジェクトです。それを繰り返してみても、結果は得られません。
私は何が間違っているのですか?このようなユーザー変数を使用することもできますか?または、プロシージャを保存された関数に変換して、3つの別々のクエリを実行する必要がありますか?