无法使用PHP从MySQL Query打印数据

时间:2014-04-16 20:18:14

标签: php mysql mysqli

我正在编写一个应该与MySQL数据库交互的PHP脚本。在我的本地测试服务器上,代码回应了它应该没问题,但在实时环境中,我收到错误Fatal error: Call to a member function fetch_array() on a non-object in [file path removed for security] on line 42。这是我在第42行附近的代码。

$query = "SELECT " . $data . " FROM mySchemaTable WHERE incrementId = " . $something;
$result = mysqli_query($conn,$query);
$row = $result->fetch_array(MYSQL_BOTH); // This line is 42.
echo $row['0'];
break;

2 个答案:

答案 0 :(得分:1)

我注意到您的代码存在一些问题:

首先,您将OOP和Procedural编程与MySQLi命令混合在一起。虽然PHP允许这样做,但你需要在整个过程中制作统一的内容。如果您使用$conn = mysqli_connect(parameters here);,则需要关注程序性(例如,将$result->fetch_array(MYSQLI_BOTH)更改为mysqli_fetch_array($conn, MYSQLI_BOTH);)。 (我会假设你正在这样做,所以这样做会改变)

否则,如果它是$conn = new mysqli(parameters);那么你会想要以OOP为基础;假设$ sql包含您要运行的查询,而不是mysqli_query($sql);您使用$conn->query($sql);

其次,echo $row['0'];应为echo $row[0];,除非您返回的行实际上命名为0,在这种情况下忽略此行。

第三,作为旁注,将变量直接插入SQL查询是一个坏主意,特别是如果它们是用户生成的。您应该研究清理输入或预处理语句以防止SQL注入攻击。

清理输入参考:What's the best method for sanitizing user input with PHP?

准备好的陈述:http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php

答案 1 :(得分:0)

没有我干预,问题就解决了。事实证明我的代码很好,但我的主机的MySQL出了问题。现在已经修复了,一切都恢复了。