我正在编写一个应该与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;
答案 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出了问题。现在已经修复了,一切都恢复了。