我正在学习 php,现在正在研究 dbs。正在跟进有关 YT 的教程并陷入以下困境:
“从表中检索所有记录”
具体来说,我可以毫无问题地连接到我的数据库,但是当我执行选择查询时它什么都不打印
这是我的代码...
<?php
//error_reporting(0);
require 'connect.php';
$result = $db->query("SELECT * FROM sample-objects");
//$result = mysqli_query($db, "SELECT * FROM sample-objects");
print_r($result);
?>
和我的连接脚本
<?php
$db = new mysqli('localhost','root','','test');
// echo $db->connect_errno,"\n";
if ($db->connect_errno)
{
echo "error: ",$db->connect_error; /* Imprime descripción de error de DB */
//die("Site offline");
}
?>
我没有从“connect.php”收到任何错误,我的数据库中确实有 2 条记录(从 phpmyadmin 这样做)
任何帮助将不胜感激,谢谢:)
最佳答案
检查查询中的错误会在包含连字符的表名中发出错误信号:
SELECT * FROM sample-objects
^ that is the problem character
MySQL 将其解释为 sample MINUS objects
认为您想在这里做数学运算。
要么用刻度线包裹它(小心,那些不是单引号 '
)复制/粘贴,如图所示:
SELECT * FROM `sample-objects`
或者用下划线重命名它(在使用这个例子之前先重命名你的表)
SELECT * FROM sample_objects
引用资料:
mysqli_query()
手册中的示例:
if (!$mysqli->query("SET @a:='this will not work'")) {
printf("Error: %s\n", $mysqli->error);
}
我还注意到你注释掉了 //error_reporting(0);
这实际上关闭了错误报告。您需要打开它并显示:
添加error reporting到您的文件的顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:显示错误只应在试运行中进行,绝不能在生产中进行。
关于php: mysql 数据库连接正常但无法执行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34191473/