0

次の DB クエリが機能しない理由を理解するのに助けが必要です。DB接続が良好であることはわかっています。$referralname = $_SESSION['user_name'];が正しくレンダリングされていることも知っています。それは私のコードで何かでなければなりません。

次のエラーが表示されます。多分これはこれを理解するのに役立つでしょう。

[12-Jun-2013 21:13:54 America/New_York] PHP Warning:  mysql_query() expects parameter 1 to be string, object given in /x/x/public_html/americansolar/partner/classes/Referral.php on line 89
[12-Jun-2013 21:13:54 America/New_York] PHP Warning:  mysql_num_rows() expects parameter 1 to be resource, null given in /x/x/public_html/americansolar/partner/classes/Referral.php on line 90

PS 常に 1 つの結果しか返さないため、while ステートメントが必要かどうかはわかりません。

私のコード:

// creating a database connection
$this->db_connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

// if no connection errors (= working database connection)
if (!$this->db_connection->connect_errno) {


      $referralname = $_SESSION['user_name'];


      // get the referrer's id
      $query_get_referral_id = $this->db_connection->query("SELECT * From users WHERE user_name = '".$referralname."';");
      $result = MYSQL_QUERY($query_get_referral_id);
      $numberOfRows = MYSQL_NUM_ROWS($result);
      $i = 0;
        while ($i<$numberOfRows)
        {
                  $thisId = MYSQL_RESULT($result,$i,"user_id");

                  $i++;
            }
}

私の解決策:

$query_get_referral_id = $this->db_connection->query("SELECT * From users WHERE user_name = '".$referralname."';");
while($row = mysqli_fetch_array($query_get_referral_id))
  {
      $thisId = $row['user_id'];
  }
4

2 に答える 2

3

mysqlimysqlを混在させています ... これらは 2 つの完全に異なるインターフェイスであり、互換性がありません。第二に、あなた$query_get_referral_idは id 値ではありません...それはmysqli_resultobjectです。次に、そのオブジェクトから値を抽出する必要があります。

そして最後に... mysqlを使用しないでください... mysqliに固執するか、 PDOを使用してください


また、これには準備済みステートメントを使用する必要があります。

$stmt = $this->db_connection->query("SELECT user_id From users WHERE user_name = ?");
$stmt->bind_param('s', $referralname);
$stmt->execute();

if($stmt->num_rows) {

   $stmt->bind_result($userId);

   while($stmt->fetch()) {
        // do something with $userId...
        // each iteration of this loop is a 
        // row of the result set, it will automatically
        // load the value of the user_id into $userId
   }
}
于 2013-06-13T01:24:58.123 に答える
0

次のようにクエリする必要はないと思います

$query_get_referral_id = $this->db_connection->query("SELECT * From users WHERE user_name = '".$referralname."';");
$result = MYSQL_QUERY($query_get_referral_id);

まあ、あなたは行くべきです

$result = $this->db_connection->query("SELECT * From users WHERE user_name = '".$referralname."';");
于 2013-06-13T01:27:20.360 に答える