无法使用PHP打印MySQL查询中的数据

无法使用PHP打印MySQL查询中的数据,php,mysql,mysqli,Php,Mysql,Mysqli,我正在编写一个PHP脚本,该脚本应该与MySQL数据库交互。在我的本地测试服务器上,代码回显了它应该是正常的,但是在实时环境中,我得到一个错误,说致命错误:在第42行的[file path removed for security]中的非对象上调用成员函数fetch_array()。这是我在第42行的代码 $query = "SELECT " . $data . " FROM mySchemaTable WHERE incrementId = " . $something; $result =

我正在编写一个PHP脚本,该脚本应该与MySQL数据库交互。在我的本地测试服务器上,代码回显了它应该是正常的,但是在实时环境中,我得到一个错误,说
致命错误:在第42行的[file path removed for security]中的非对象上调用成员函数fetch_array()。这是我在第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;

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

首先,您将OOP和过程编程与MySQLi命令混合在一起。尽管PHP允许这样做,但您仍希望在整个过程中实现统一。如果您使用的是
$conn=mysqli\u connect(此处的参数)
您需要关注过程(将
$result->fetch_数组(MYSQLI_两者)
更改为
MYSQLI_fetch_数组($conn,MYSQLI_两者);
)。(我假设你正在这样做,那么做这个^change)

否则,如果它是
$conn=newmysqli(参数)然后您将希望使其基于OOP;而不是
mysqli\u查询($sql)您将使用
$conn->query($sql),假设$sql包含要运行的查询

其次,
echo$row['0']应该是
echo$row[0]除非返回的行实际名为0,否则忽略此项

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

消毒输入参考:


准备好的陈述:

问题没有我的干预就解决了。原来我的代码还不错,但主机的MySQL有点问题。它现在已修复,一切都恢复正常。

行是否实际命名为“0”?因为这就是你想要的。尝试$row[0];您的查询失败,并且无法检查失败:
$result=mysqli_查询(…)或die(mysqli_错误($conn))
$data
在代码的这一点上到底是什么?这个错误告诉您查询有问题……与
$row['0']
没有任何关系。
echo$query
显示了什么?在使用OO和过程编程时没有一致的要求。这可能会让读者感到困惑,但PHP本身并没有问题;echo$array['0']并打印
1
。所以PHP会根据需要自动转换它。防止SQL注入当然是个好主意,但它不一定能解决他遇到的任何问题。还要注意的是,在替换
SELECT
子句中的列名时,不能使用占位符。这是我的错,我只是编辑来解决这个问题,我不认为可以混合样式。我提到了SQL注入的东西作为旁注,所以我知道这不会解决它,但它总是一个很好的预防措施。他得到的错误表明
mysqli_query()
返回
false
,这意味着SQL中有错误。你回答的哪一部分解决了这个问题?