您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

mySQLi准备的语句无法get_result()

mySQLi准备的语句无法get_result()

通过一些检查,即使我的主机上安装了MysqLi,显然MysqLnd驱动程序也不存在。因此,不能使用get_result()(PHP手册将get_result定义为MysqLnd依赖),取而代之的是,需要做一些额外的编码以按我希望的方式处理我的结果。

因此,我决定尝试并了解PDO的工作原理,几分钟之内,瞧!

将上面的代码替换为:

function checkUsernameEmailAvailability($username, $email) {

echo 'pdo about to be created';

$dsn = 'MysqL:dbname='.C_BASE.';host='.C_HOST;
$user = C_USER;
$password = C_PASS;

try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection Failed: ' . $e->getMessage();
}

$params = array(':username' => $username, ':email' => $email);

try{
$sth = $dbh->prepare('SELECT username,email FROM tb_users WHERE username = :username OR email = :email ');
} catch(PDOException $e) {
    echo 'Prepare Failed: ' . $e->getMessage();
}

try{
$sth->execute($params);
} catch(PDOException $e) {
    echo 'Execute Failed: ' . $e->getMessage();
}
$result = $sth->fetch(PDO::FETCH_ASSOC);
print_r($result);
}

我可以想到的错误检查量不多,而且一开始就完全没有问题!

function checkUsernameEmailAvailability($username, $email) {
    $dsn = 'MysqL:dbname='.C_BASE.';host='.C_HOST;
    $user = C_USER;
    $password = C_PASS;
    new PDO($dsn, $user, $password);

    $params = array(':username' => $username, ':email' => $email);

    $sth = $dbh->prepare('SELECT username,email FROM tb_users WHERE username = :username OR email = :email ');
    $sth->execute($params);
    $result = $sth->fetch(PDO::FETCH_ASSOC);

    print_r($result);
}
MySQL 2022/1/1 18:17:28 有521人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶