特定の日付以降にユーザーがシステムにログインしたかどうかを評価する必要があります。これを行うために、MySQLデータベースには、users、survey、loginsの3つのテーブルがあります。調査では、ユーザーが最後にログインしたときと比較して、必要な時点の日付が保持されます。質問は次のとおりです。
「?」を使ったとき プレースホルダーの場合、結果のnum_rowsカウントは常に0でした。ただし、クエリステートメントを$ mysqli-> prepare()に渡す前に値を割り当てると、プロセスは期待どおりに機能します。どういうわけか、store_result()は列を取得していませんでした。これが私のコードです:
if (isset($userId)){
//get survey release date
$res3 = $mysqli->query("SELECT sur_date,sur_url FROM survey ORDER BY sur_id DESC limit 1");
$array = $res3->fetch_assoc();
$theta_date = $array['sur_date'];
//$theta_date = "2013-01-18 01:00:00";
//this didn't generate errors, but didn't output the correct result either.
//$query = "SELECT login_id FROM logins WHERE login_user=? AND login_date>=?";
//if ($stmt = $mysqli->prepare($query)){
// $stmt->bind_param('ss',$userID,$theda_date);
// $stmt->execute();
//this works
$query = "SELECT login_id FROM logins WHERE login_user='$userId' AND login_date>='$theta_date'";
if ($stmt = $mysqli->prepare($query)){
$stmt->execute() or die("The query did not work");
//if number is greater than 0 do something
$stmt->store_result();
printf("The number of login ids after theta are %d",$stmt->num_rows);
$stmt->close();
}else{
echo "The query did not execute.";
}
}else{
echo "The User ID was not valid.";
exit();
}
$mysqli->close();
どんな洞察も役に立ちます、