gpt4 book ai didi

php - PDO 语句返回 false

转载 作者:可可西里 更新时间:2023-11-01 07:08:56 24 4
gpt4 key购买 nike

我正在运行 2 个查询,第一个查询正确通过并返回所需的值,但第二个查询返回 false。

我已经设置了 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 所以我应该得到一个错误的异常,所以我猜我的 $ stmt->execute(); 是这里的罪魁祸首。

因为这是唯一可以返回 false 的函数,因为我已经设置了 error 属性。我还尝试设置 $stmt->closeCursor();$stmt = null;unset($stmt); 没有有用。

这会执行两个查询(fetch_wallet() 函数中的“darkrp”和“pointshop”。

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 时返回 false 。不抛出异常。

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

phpMyAdmin 中 pointshop_data 表的打印屏幕(我想要那里的 440 值):

Screenshot

var_dump($this->uniqueid); 返回的值是 3266928646

我已经调试了一切,我没有得到任何错误,只是一个错误。

PHP 版本:5.3.10

MySQL版本:5.5.38

操作系统: Ubuntu 12.04 LTS

最佳答案

我认为你的类中一定有其他错误导致此代码无法运行。

我已经导入了您的表结构并创建了以下测试代码:

<?php

class A
{
private $pdo;
private $uniqueid;
private $methods = ['darkrp' => true, 'pointshop' => true];

public function __construct($pdo, $uniqueid)
{
$this->pdo = $pdo;
$this->uniqueid = $uniqueid;

}


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();
}
}


public function run()
{


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

}


}


$pdo = new PDO('mysql:host=localhost;dbname=tests', 'root', '');

$a = new A($pdo, 3266928646);

$a->run();

我得到的结果是:

string(4) "2075" string(3) "440" 

所以它正在正常工作。

请尝试此代码(这是整个文件 - 当然您需要更改您的数据库名称、用户和密码)并检查它是否为您提供相同的结果。如果是,则可能您的类(class)中还有其他错误。

关于php - PDO 语句返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25214981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com