【问题标题】:OOP selecting data mysqlOOP选择数据mysql
【发布时间】:2023-04-10 16:48:01
【问题描述】:

我是 OOP 的新手,只是尝试从 mysql_ 迁移,但在迁移时遇到了一些问题。

$konek = new PDO('mysql:host=localhost;dbname=mydatabase', root, root);$hasil = $konek->query("SELECT * FROM `tabel`");
while ($data = $hasil->fetch_object()) {
echo '<td>'.$data->something.'</td>';}

它不起作用或显示错误,但是当我用mysqli 替换第一行时它起作用了:

konek = new mysqli('localhost','root','root','mydatabase');

任何帮助将不胜感激。

【问题讨论】:

  • 我怀疑您没有收到错误,因为:1) 您通常没有配置 PHP 来执行此操作。 2) 您没有任何 PDO 特定的错误检查代码。

标签: php mysql oop pdo mysqli


【解决方案1】:

我假设在您的代码中,它被编码为字符串:(或者是 root 定义的?)

$konek = new PDO('mysql:host=localhost;dbname=mydatabase', root, root);

显然,在您的示例中,如果它是一种类型,请将其更改为:

$konek = new PDO('mysql:host=localhost;dbname=mydatabase', 'root', 'root', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));

将您的代码重构为:

error_reporting(E_ALL);
ini_set("display_errors", 1);

try {
    $konek = new PDO('mysql:host=localhost;dbname=mydatabase', 'root', 'root', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

$hasil = $konek->query("SELECT * FROM `tabel`");
echo '<table>';
while ($row = $hasil->fetch(PDO::FETCH_OBJ)) {
    echo '<tr>';
        echo '<td>' . $row->column_name . '</td>';
    echo '</tr>';
}
echo '</table>';

【讨论】:

  • 感谢您的帮助,现在每个错误都会显示出来,我使用 MAMP,我认为错误默认是隐藏的
  • @user3181160 是的,即使在其他环境中,它通常默认关闭,你真的必须先设置它,很高兴它有帮助
【解决方案2】:

1)用户名和密码要加引号

2) 使用 try catch

3) 使用准备并执行查询

4) 然后获取

试试这样:

try {
    $konek = new PDO('mysql:host=localhost;dbname=mydatabase', 'root', 'root');
    $konek->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    die( 'ERROR: ' . $e->getMessage());
}

try {
    $hasil = $konek->prepare("SELECT * FROM `tabel`");
    $hasil->execute();
    while ($data = $hasil->fetch(PDO::FETCH_OBJ)) {
    echo '<td>'.$data->something.'</td>';
    }

}
catch(PDOException $e) {
        die( 'ERROR: ' . $e->getMessage());
    }

【讨论】:

  • 尝试 { $konek = new PDO('mysql:host=localhost;dbname=jwcrm2', 'root', 'root'); $konek->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { die( 'ERROR: ' . $e->getMessage()); } 尝试{} $hasil = $konek->query("SELECT * FROM kontak"); while ($data = $hasil->fetch_object()) { echo ''.$data->nomer.''; } catch(PDOException $e) { die( 'ERROR: ' . $e->getMessage()); }
  • 好的,谢谢,这是可行的:),我只是尝试编辑不存在但不显示错误的表格,应该是这样吗?
【解决方案3】:

请提供它回显的错误消息。

我的最佳猜测:

http://www.php.net/manual/en/pdostatement.fetchall.php

尝试替换

while ($data = $hasil->fetch_object()) {
echo '<td>'.$data->something.'</td>';}

while ($data = $hasil->fetchAll()) {
echo '<td>'.$data->something.'</td>';}

【讨论】:

猜你喜欢
  • 2016-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-03
  • 2017-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多