PHP&PDO:可以连接到数据库;似乎无法质疑
看起来我可以使用PDO连接到我的数据库,但不能用它执行任何查询。例如:PHP&PDO:可以连接到数据库;似乎无法质疑,php,pdo,Php,Pdo,看起来我可以使用PDO连接到我的数据库,但不能用它执行任何查询。例如: private function connect() { try { $link = new PDO("mysql:host=$this->sHost;dbname=$this->sName", $this->sUser, $this->sPass); } catch (PDOException $e) { d
private function connect() {
try {
$link = new PDO("mysql:host=$this->sHost;dbname=$this->sName", $this->sUser, $this->sPass);
}
catch (PDOException $e) {
die ($e);
}
print_r($link);
$result = $link->query("select * from mt3_users");
var_dump($result);
$row = $result->fetch($result);
die("Your id is: ".$row["id"]);
//$link = mysql_connect($this->sHost, $this->sUser, $this->sPass);
if (!$link) {
echo "Failed to connect to $this->sHost!";
return false;
}
return $link;
}
这将返回以下内容:
对象布尔法尔斯
致命错误:在第32行的Database.php中对非对象调用成员函数fetch
所以基本上,$link作为一个PDO对象返回,我更改了用户名和密码以查看是否捕获到异常;它是,并且由于某种原因,PDOConnection::Query返回null。这是我第一次处理PDO-我做了什么有趣的事情吗?很可能查询失败,您确定表mt3_用户的名称,并且选择了正确的数据库吗?该错误消息显示$result不是对象,这是由于查询中的错误造成的 此外: 应该是
$row = $result->fetch();
除非您想指定要获取的选项,但不将对象作为参数传递。您能试试吗
private function connect() {
try {
$link = new PDO("mysql:host=$this->sHost;dbname=$this->sName", $this->sUser, $this->sPass);
return $link ;
}
catch (PDOException $e) {
die ($e);
}
}
$pdolink = $this->connect();
$rows = $pdolink->query("select * from mt3_users");
foreach($rows as $row ){
echo("Your id is: ".$row["id"]);
}
如果您需要继续使用fetchAll函数
数组[0]=>00000[1]=>1046[2]=>未选择任何数据库数组 我想没关系。事实证明,在使用常规MySQL函数进行迁移时,我没有将$this->sName$this->sName设置为null。我有点惊讶它没有抛出异常。不过,只有一半 固定的
但是谢谢你们的回答:为了得到查询中的错误:
$result = $link->query(...);
if($result===FALSE){
print_r( $link->errorInfo);
exit();
}
// the correct way to fetch one row
$link->fetch(PDO::FETCH_ASSOC); // or whatever way you want to fetch data
代码风格建议:不要将变量放在双引号字符串中,而是使用单引号字符串和字符串串联来嵌入变量。使代码更可读,速度更快。此外,如果你想让一个异常是致命的,你不必捕捉它们并手动终止。你怎么能发现文字字符串+串联更具可读性?字符串中的变量插值是使用带符号的变量的最好部分,无数的开/闭引号和点造成了糟糕的局面。
private function connect() {
try {
$link = new PDO("mysql:host=$this->sHost;dbname=$this->sName", $this->sUser, $this->sPass);
return $link ;
}
catch (PDOException $e) {
die ($e);
}
}
$pdolink = $this->connect();
$q = $pdolink->prepare("select * from mt3_users");
$q->exectue();
$rows = $q->fetchAll();
var_dump($rows);
foreach($rows as $row ){
echo("Your id is: ".$row["id"]);
}
$result = $link->query(...);
if($result===FALSE){
print_r( $link->errorInfo);
exit();
}
// the correct way to fetch one row
$link->fetch(PDO::FETCH_ASSOC); // or whatever way you want to fetch data