我不知道我在这里做错了什么,但我只是想连接到数据库搜索主键并将行放在数组中。我能得到的最好的是一个空白的屏幕,我很高兴得到那个。非常感谢.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);
}
}
答案 0 :(得分:1)
您的代码存在一些问题。
首先,您将表格用单引号括起来,而不是正确的identifier。
select Close from '$table'
它应该在刻度线中
select Close from `$table`
如果您没有传递潜在的保留字或者在表名中包含连字符或空格,或者任何让MySQL抱怨的内容,请删除它们。
select Close from $table
在打开连接后立即添加$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
,这会捕获该错误。
然后正如Rizier123在评论中所述,并引用它:
试试这个:$ dbh = new PDO(&#39; mysql:host = localhost; port = 3306; dbname =&#39;。$ dbName,&#39; root&#39;,&#39;& #39);也可以:printr _($ result);
您设置端口的方式应该像Rizier所说的那样。
:
应为=
符号。根据手册http://php.net/manual/en/ref.pdo-mysql.connection.php
更完整的例子:
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));