[Php] بيان بدو يعود كاذبة



Answers

يتغيرون

$stmt->execute(array(":uid" => $this->uniqueid));

إلى

$stmt->bindValue(':uid', $this->uniqueid);
$stmt->execute();
Question

أنا تشغيل 2 الاستعلامات، أول واحد يمر بشكل صحيح ويعود القيمة المطلوبة، ولكن الثاني يعود كاذبة.

لقد قمت بتعيين $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); لذلك يجب أن يكون الحصول على استثناء أكثر كاذبة، لذلك أنا التخمين أن بلدي $stmt->execute(); هو الجاني هنا.

حيث أن هذه هي الدالة الوحيدة التي يمكن أن تعود كاذبة الآن أن قمت بتعيين السمة خطأ. لقد حاولت أيضا وضع $stmt->closeCursor(); ، $stmt = null; ، و unset($stmt); دون جدوى.

هذا ينفذ اثنين من الاستعلامات (على حد سواء "داركرب" و "بوينشوب" في الدالة fetch_wallet() .

if($this->pdo) {
    foreach($this->methods as $method => $bool) {
        if($bool) { $array[$method] = $this->fetch_wallet($method); }
    }
}

هذه هي الدالة fetch_wallet() :

public function fetch_wallet($type) {
    if($type == "darkrp") {
        $query = "SELECT `wallet` FROM `darkrp_player` WHERE uid=:uid LIMIT 1";
    }
    elseif ($type == "pointshop") {
        $query = "SELECT `points` FROM `pointshop_data` WHERE uniqueid=:uid LIMIT 1";
    }
    try {
        $stmt = $this->pdo->prepare($query);
        $stmt->execute(array(":uid" => $this->uniqueid));
        $result = $stmt->fetchColumn();
        return $result;
    }
    catch (PDOException $e) {
        return $e->getMessage();
    }
}

عند تشغيل var_dump($stmt->errorInfo()); أحصل على هذا، وهو ما يعني أن كلا الاستعلامات تعمل بشكل جيد، على الرغم من أن آخر واحد يعود كاذبة عندما يجب أن يعود 440 . لا يتم طرح أي استثناء.

array(3) {
  [0]=> string(5) "00000"
  [1]=> NULL
  [2]=> NULL
}
array(3) {
  [0]=> string(5) "00000"
  [1]=> NULL
  [2]=> NULL
}

شاشة مطبوعة من الجدول pointshop_data في فبميادمين (أريد قيمة 440 هناك):

القيمة التي تم إرجاعها من var_dump($this->uniqueid); هو 3266928646

لقد تصحح كل شيء، وأنا لا تحصل على أي أخطاء على الإطلاق، مجرد خطأ.

فب الإصدار: 5.3.10

ميسكل فيرسيون: 5.5.38

نظام التشغيل: أوبونتو 12.04 لتس




Links