【问题标题】:php: mysql db connection ok but can't perform queryphp:mysql db连接正常但无法执行查询
【发布时间】:2015-12-10 00:11:19
【问题描述】:

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

任何帮助将不胜感激,谢谢:)

【问题讨论】:

    标签: php mysql database mysqli


    【解决方案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
    

    旁注:只应在暂存阶段显示错误,而不是在生产阶段。

    【讨论】:

    • 谢谢!这让我陷入困境:) 我已经检查了 myphpadmin,它显示选择查询没有任何问题,eclipse 没有突出显示错误,所以我认为我是安全的。我现在会更加小心,只是掌握它的窍门。再次感谢!
    猜你喜欢
    • 2017-11-08
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 2019-12-11
    • 2019-11-23
    • 2010-11-22
    • 1970-01-01
    相关资源
    最近更新 更多