用php连接到mysql db时遇到问题

时间:2012-08-06 08:17:21

标签: php mysql

我在godaddy上有一个测试数据库,之前我遇到过类似的问题但是在stackoverflow的帮助下它已经解决了。所以我实际上使用了相同的解决方案但是现在我遇到了很多错误从浏览器加载我的php文件。

Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /home/content/97/8603797/html/countryQuery.php on line 14

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/content/97/8603797/html/countryQuery.php on line 14

Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /home/content/97/8603797/html/countryQuery.php on line 16

Warning: mysql_close(): no MySQL-Link resource supplied in /home/content/97/8603797/html/countryQuery.php on line 18
Database Output

我已经阅读了问题是什么,我读过的一些内容表明我没有正确地连接到数据库..但我只是在做我已阅读/被告知的内容并且我真的不知道我还能做什么解决我遇到的问题...

这是我的PHP代码,如果有人提出建议或解决方案,我将非常感谢您的回复。

<?

 $hostname = 'mydatabasename.db.6666666.hostedresource.com';
  $database = 'mydatabasename';
  $username = 'myusername';
  $password = 'secretsecret';

  // establish a connection
  $db = new PDO("mysql:host=$hostname;dbname=$database",$username,$password);


$query="SELECT * FROM `Countries`";

$result=mysql_query($query);

$num=mysql_numrows($result);

mysql_close();

echo "<b><center>Database Output</center></b><br><br>";

$i=0;
while ($i < $num) {

$country=mysql_result($result);

echo "<b>$country<br>";

$i++;
}

?>

输出应该只是我在我的数据库的COUNTRys表中的国家名称列表..其中包含值。

2 个答案:

答案 0 :(得分:4)

您正在混合PDO和mysql_*函数。

尝试这样的事情:

$db = new PDO("mysql:host=$hostname;dbname=$database",$username,$password);
$db->setAttribute(PDO::ATTR_AUTOCOMMIT, true);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql="SELECT * FROM `Countries`";

$numRows=$dbh->exec($sql);
echo "There were $numRows selected with:<b> $sql </b><br><br>";
$db=null;
unset($db);

从PDO连接获取数据时,我通常使用FETCH_INTO选项执行此类操作:

$stmt = $db->query($sql);
$obj = $stmt->setFetchMode(PDO::FETCH_INTO, new userStructure);
// I do normally have a class matching the row I wan:

foreach($stmt as $userStructure)
{
    $someObject->year=$userStructure->year;
    $someObject->month=$userStructure->month;
    unset($stmt);
}

答案 1 :(得分:0)

确保在使用PDO连接时也包括端口。这看起来像是在托管环境中执行此操作。查看有关所用端口的安装指南。