0

何らかの理由で、私のSQLクエリのいくつかは奇妙に数値を処理しているようです。たとえば、私のmySQLデータベースには、pointsというINT(11)フィールドを持つusersというテーブルがあります。このフィールドを取得しようとすると、正しく返される場合とnullが返される場合があります。このクエリは"User fMcBBx has points according to database"毎回返されます:

$query = "SELECT points FROM users WHERE user_id = '$this->getID()'";
    $result = DBCore::call()->fetchRow($query);
    echo "User {$this->getID()} has {$result['points']} points according to database";

私のコンストラクターからのこれは毎回正しく番号を返しますが、次のようになり"User fMcBBx has 1050 points according to database"ます。

SELECT first,
       last,
       email,
       points,
       level,
       gender
FROM users
WHERE user_id = '{$this->id}'

このフィールドを正しく返すパターンと返さないパターンがクエリに見つかりませんでした。PHPmyAdminのデータベースに対して実行してすべてをチェックし、すべてが機能していることを確認しました。また、すべての入力値をエコーし​​て、正しく転送されていることを確認しました。一部のクエリでnullが発生するのに、他のクエリではnullが発生しないのはなぜですか?

4

1 に答える 1

0

最初のクエリで関数呼び出しを中かっこで囲むと、$query = "SELECT points FROM users WHERE user_id = '{$this->getID()}'";完全に機能します。PHPは、変数を読み取る方法で二重引用符で囲まれた文字列内の関数呼び出しを評価できません。関数呼び出しを中括弧で囲むと、関数呼び出しを正しく評価できます。

于 2012-07-03T17:52:12.917 に答える