Php 使用绑定网络运行mysqli命令时出错fet_行为非对象
我正在编写以下代码:Php 使用绑定网络运行mysqli命令时出错fet_行为非对象,php,mysql,mysqli,Php,Mysql,Mysqli,我正在编写以下代码: $conn = new mysqli($server,$user,$pw,$db) or die ('Could not connect to DB'.mysqli_error()); $id = 12345; $sql = 'select * from invTypes where typeId = ? and published = 1'; $stmt = $conn->prepare($sql); $stmt->bind_param("i",$id);
$conn = new mysqli($server,$user,$pw,$db) or die ('Could not connect to DB'.mysqli_error());
$id = 12345;
$sql = 'select * from invTypes where typeId = ? and published = 1';
$stmt = $conn->prepare($sql);
$stmt->bind_param("i",$id);
$stmt->execute();
$res = $stmt->get_result();
$row = $res->fetch_assoc();
//process $row's data.
当在mysql内部使用int而不是问号运行查询时,它可以工作。看来我的捆扎和取回方式有问题
我正在翻阅文档,似乎我有点困惑,我该如何处理这个错误
编辑:我在文档中读到了这一点
$stmt = $mysqli->prepare("SELECT id, label FROM test WHERE id = 1");
$stmt->execute();
$res = $stmt->get_result();
$row = $res->fetch_assoc();
并把它应用到上面。还是。错误是:致命错误:调用未定义的方法mysqli_stmt::get_result()如前所述,mysqli_stmt::fetch
不会返回结果,它会设置绑定的变量值
要从
mysqli
检索可编辑的结果集,请使用mysqli\u stmt::get\u result
,这反过来要求安装。例如,在Ubuntu上,它可以作为包php5 mysqlnd
安装。检查phpinfo()
的输出;mysqlnd应该有一个完整的部分问题在于这一行
$res = $mysqli_stmt_fetch($stmt);
以下是一些错误:
函数前面有一个不正确的美元(mysqli\u stmt\u fetch()
)符号$
函数实际上是将准备好的语句中的结果提取到绑定变量中,并且在代码中没有使用任何mysqli\u stmt\u fetch()
方法->bind\u result()
SELECT*
而不是SELECT column1,column2
,因此最好使用->get_result()
方法来获取结果集
以下是参考资料:
// your code
$sql = 'select * from invTypes where typeId = ? and published = 1';
$stmt = $conn->prepare($sql);
$stmt->bind_param("i",$id);
if($stmt->execute()){
$res = $stmt->get_result();
$row = $res->fetch_assoc();
}
建议:不要混淆mysqli的过程风格和面向对象风格是一个自定义函数吗?我对此表示怀疑。语法为
bind_param
。对不起,打错了。已调整。尽管如此,请参阅手册。阅读。我似乎不明白为什么res
返回致命错误:对非对象调用成员函数fetch\u assoc()$mysqli\u stmt\u fetch($stmt)
这是一个变量,不是一个函数,它根本不是面向对象的,这对我来说似乎不太管用。请参见我的编辑“您混淆了mysqli的过程式和面向对象的风格”-不推荐,但它确实有效;-)@FallenReapperget_result()
方法仅适用于mysqlnd
,请参阅。@Fred ii-是的,这更像是一个礼貌的建议,而不是致命的错误。:-@FallenReapper如果在安装过程中遇到任何问题,请参阅,以及可接受的解决方案。这可能就是问题所在。我可能没有安装驱动程序