php:mysql db connection ok但无法执行查询

时间:2015-12-10 00:11:19

标签: php mysql database mysqli

我正在学习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)

感谢任何帮助,谢谢:)

1 个答案:

答案 0 :(得分:1)

检查了查询中的错误后,系统会在包含连字符的表名中发出错误信号:

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

旁注:只应在暂存时进行显示错误,而不是生产。