我一直在尝试将以下mysql连接函数迁移到PDO:
function validate_email_input($email)
{
$dbc = @mysql_connect('localhost', 'userName', '******');
mysql_select_db('users', $dbc);
$query = "SELECT email FROM user_list WHERE email='$email'";
if ($result = mysql_query($query, $dbc))
{
$row = mysql_fetch_array($result);
if ($row['email'] == $email)
{
return TRUE;
}
else
{
return FALSE;
}
}
else
{
echo '<p class="error">Could not retrieve he data because:<br />' . mysql_error($dbc) . '.</p>
<p>The query being run was: ' . $query . '</p>';
}
}
这很好用。但是当我尝试使用以下PDO函数来获得相同的结果时,我收到错误:
function validate_email_input($email)
{
// Step 1: Establish a connection
$db = new PDO("mysql:host=localhost;dbname=users", "userName", "******");
// Step 2: Construct a query
$query = "SELECT * FROM user_list WHERE email = '$email'";
// Step 3: Send the query
$result = $db->query($query);
// Step 4: Iterate over the results
if ($result)
{
$row = $result->fetch(PDO::FETCH_ASSOC);
if ($row['email'] == $email)
{
return TRUE;
}
else
{
return FALSE;
}
}
// Step 5: Free used resources
$result->closeCursor();
$db = null;
}
是的 - 我尝试使用try-catch尝试上述功能,但这并不影响任何事情。我仍然得到错误: 致命错误:未捕获的异常&#39; PDOException&#39;消息&#39; SQLSTATE [HY000] [1049]未知数据库&#39;用户&#39;
我使用Bitnami RubyStack(v.1.9.3-25)附带的apache2模块,该模块使用PHP版本5.4.3 已经检查过php.ini文件,并且所有PDO扩展都已取消注释。 请帮忙!感谢
答案 0 :(得分:1)
找到解决方案!显然,它希望我在创建PDO对象时指定端口号(localhost:3307)而不仅仅是localhost。任何人都知道如何更改Bitnami RubyStack for Windows中的默认localhost端口?