我不是PHP开发人员,但在尝试用这种语言做简单的事情时遇到了很多麻烦。当前的问题是我只是想做一个select语句,如果我这样做的话就可以了:
$sql = "SELECT * FROM victim WHERE steamId = 129847129847"
我的其余逻辑运行:
$stmt = $this->pdo->prepare($sql);
$stmt->execute();
$user = $stmt->fetch();
if($user) {
//success
error_log('hit');
} else {
error_log('error????????????');
}
我在我的控制台中获得了hit
。很好,但那不是很有用。我想简单地将硬编码值交换到我在函数中传递的内容。
function checkIfVictimExists($steamId)
现在我还没有尝试过所有代码,但我只是尝试了我在互联网上看到过的所有这些内容并且不断打击其他内容不管我做什么。再次,硬编码steamId
,工作正常,尝试注入值不起作用。
这是我目前无法正常使用的实施方式:
$sql = "SELECT * FROM victim WHERE steamId = ?";
$stmt = $this->pdo->prepare($sql);
$stmt->execute(array($steamId));
$user = $stmt->fetch();
if($user) {
//success
error_log('hit');
} else {
error_log('error????????????');
}
我知道我已尝试将其传递给:
...WHERE steamId = :steamId
和
...execute(array(':steamId' => $steamId);
没有运气。
我只是试图将它添加到字符串中,如下:
...WHERE steamId = {$steamId}
和
...WHERE steamId = ".$steamId."
和
...WHERE steamId = ".$steamId
(想想也许我需要一个额外的"?)
字面上没有任何作用。当我尝试获取错误信息时,通过$this->pdo->errorInfo()
我得到的是一个这样的数组:
[0] = 0000
[1] =
[2] =
真的不知道为什么会这么混乱,但显然我遗漏了一些我在任何谷歌搜索中都没有看到的东西。现在在这里寻求帮助,提前感谢。
修改
这是我的连接逻辑:
...
private $pdo;
function __construct() {
$dsn = "mysql:host=".$this->dbhost.";dbname=".$this->dbname.";charset=".$this->charset;
try {
$this->pdo = new PDO($dsn, $this->username, $this->password);
$this->connectionStatus = true;
} catch(Exception $ex) {
error_log('Could not connect to DB'.$ex);
}
}