我是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');
任何帮助都会非常感激。
答案 0 :(得分:2)
我假设在你的代码中,它被编码为字符串:(或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>';
答案 1 :(得分:0)
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());
}
答案 2 :(得分:-1)
请提供与之相呼应的错误消息。
我最好的猜测:
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>';}