PHP PDO SELECT 语句不返回任何内容
PHP PDO SELECT statment returning nothing
我不知道我在这里做错了什么,但我只是想连接到数据库搜索主键并将该行放入数组中。我能得到的最好的是一个空白屏幕,我很高兴只是得到 that.help 非常感谢。
<?php
include ('DatabaseAccessV2.php');
$selectedData=new DatabaseAccess();
$selectedData->tableToArray();
?>
<?php
class DatabaseAccess{
function tableToArray(){
$dbName='db1';
$table='table1';
$i=1;
$dbh = new PDO('mysql:host=localhost:3306;dbname='.$dbName, 'root', '');
$sql = "select Close from '$table' where entryNum ='$i'";
$sth = $dbh->prepare($sql);
$sth->execute();
$result = $sth->fetch(PDO::FETCH_ASSOC);
echo($result);
}
}
您的代码有一些问题。
首先,您将 table 括在单引号中,这是不正确的 identifier.
select Close from '$table'
它应该以刻度为单位
select Close from `$table`
如果您没有传递潜在的保留字或在 table 名称中包含连字符或 space 或任何要向 MySQL 投诉的内容,则
或删除它们。
select Close from $table
在连接打开后立即添加 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
,这将捕获该错误。
然后正如 Rizier123 在评论中所述并引用它:
Try this: $dbh = new PDO('mysql:host=localhost;port=3306;dbname='.$dbName, 'root', ''); Also do: printr_($result);
您设置端口的方式应该按照 Rizier 提到的方式进行。
- 那个冒号
:
应该是一个 =
符号。
向 Rizier123 致敬
根据手册http://php.net/manual/en/ref.pdo-mysql.connection.php
More complete examples:
mysql:host=localhost;port=3307;dbname=testdb
mysql:unix_socket=/tmp/mysql.sock;dbname=testdb
来自http://php.net/manual/en/ref.pdo-mysql.php
$dbh = new PDO('mysql:host=xxx;port=xxx;dbname=xxx', 'xxx', 'xxx',
array( PDO::ATTR_PERSISTENT => false));
我不知道我在这里做错了什么,但我只是想连接到数据库搜索主键并将该行放入数组中。我能得到的最好的是一个空白屏幕,我很高兴只是得到 that.help 非常感谢。
<?php
include ('DatabaseAccessV2.php');
$selectedData=new DatabaseAccess();
$selectedData->tableToArray();
?>
<?php
class DatabaseAccess{
function tableToArray(){
$dbName='db1';
$table='table1';
$i=1;
$dbh = new PDO('mysql:host=localhost:3306;dbname='.$dbName, 'root', '');
$sql = "select Close from '$table' where entryNum ='$i'";
$sth = $dbh->prepare($sql);
$sth->execute();
$result = $sth->fetch(PDO::FETCH_ASSOC);
echo($result);
}
}
您的代码有一些问题。
首先,您将 table 括在单引号中,这是不正确的 identifier.
select Close from '$table'
它应该以刻度为单位
select Close from `$table`
如果您没有传递潜在的保留字或在 table 名称中包含连字符或 space 或任何要向 MySQL 投诉的内容,则
或删除它们。
select Close from $table
在连接打开后立即添加 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
,这将捕获该错误。
然后正如 Rizier123 在评论中所述并引用它:
Try this: $dbh = new PDO('mysql:host=localhost;port=3306;dbname='.$dbName, 'root', ''); Also do: printr_($result);
您设置端口的方式应该按照 Rizier 提到的方式进行。
- 那个冒号
:
应该是一个=
符号。
向 Rizier123 致敬
根据手册http://php.net/manual/en/ref.pdo-mysql.connection.php
More complete examples:
mysql:host=localhost;port=3307;dbname=testdb
mysql:unix_socket=/tmp/mysql.sock;dbname=testdb
来自http://php.net/manual/en/ref.pdo-mysql.php
$dbh = new PDO('mysql:host=xxx;port=xxx;dbname=xxx', 'xxx', 'xxx',
array( PDO::ATTR_PERSISTENT => false));