1

一部の 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 コンソールでは動作するような単純なクエリでさえ動作しません。誰でもこのエラーが表示されますか?

4

1 に答える 1