一部の Php 検証でルールをアクティブ化すると、SQL エラー メッセージが表示されました。このルールの目的は、ユーザーが過去 24 時間に 2 回以上投票したかどうかを確認することです。使用したコードは次のとおりです。
// Configure your settings:
$daily_limit = 2;
$content_type = 'node';
$day = strtotime(date('Y-m-d'))-1;
// Load the active user account
global $user;
// Drupal has a security feature called the Database Abstraction Layer.
// You have to build DB queries with variables that are defined in an array.
// Define the query string, where ":drupaluid" etc. are arbitrary placeholders
$query = 'SELECT * FROM votingapi_vote WHERE uid=:drupaluid AND content_type=:drupaltype AND timestamp > :day';
// Define each placeholder
$variables = array(':drupaluid' => $user->uid, ':drupaltype' => $content_type, ':day' => $day);
// Query the Drupal database
$result = db_query($query, $variables);
// Count the number of rows returned from the Drupal database
// From: http://api.drupal.org/api/drupal/includes%21database%21database.inc/function/db_query/7
$nodecount = $result->rowCount();
// Set the flag as to whether this Rule is effective or not
if ( $nodecount >= $daily_limit) {
return TRUE; // You will be over the accepted quota
} else {
return FALSE; // Still got room. Allow the new node.
}
$query = 'SELECT * FROM votingapi_vote WHERE uid = 1
クエリをデバッグしようとしましたが、PHP では動作しないのに対し、mysql コンソールでは動作するような単純なクエリでさえ動作しません。誰でもこのエラーが表示されますか?