使用bind_param时是否可以使用fetch_object? (PHP /库MySQLi)
发布时间:2020-05-25 08:29:45 所属栏目:PHP 来源:互联网
导读:我有个问你们.我正试图让我尽可能安全地运行 MySQL.我现在想知道在准备好语句,绑定参数并执行语句之后是否可以使用MySQLi获取对象. 例: $sql = $mysqli-prepare(SELECT * FROM users WHERE username = ?;);$sql-bind_param(s, $username);$username = RastaL
我有个问你们.我正试图让我尽可能安全地运行 MySQL.我现在想知道在准备好语句,绑定参数并执行语句之后是否可以使用MySQLi获取对象. 例: $sql = $mysqli->prepare('SELECT * FROM users WHERE username = ?;'); $sql->bind_param('s',$username); $username = 'RastaLulz'; $sql->execute(); $object = $sql->fetch_object(); echo $object->mail; 我收到以下错误: Fatal error: Call to a member function fetch_object() on a non-object in C:xampphtdocsProCMSDevBestCMSincglobalclass.mysql.php on line 23 但是,当我添加“$sql-> result_metadata();”我没有收到错误,但它没有返回结果(它只是NULL). $sql = $mysqli->prepare('SELECT * FROM users WHERE username = ?;'); $sql->bind_param('s',$username); $username = 'RastaLulz'; $sql->execute(); $result = $sql->result_metadata(); $object = $result->fetch_object(); echo $object->mail; 这是你如何在不绑定参数的情况下完成的: $sql = $mysqli->query("SELECT * FROM users WHERE username = 'RastaLulz';"); $object = $sql->fetch_object(); echo $object->mail; 这是我当前的MySQL类 – 只需要让execute函数正常工作. 任何帮助是,将不胜感激! 我只是在我的数据库类中挖出来,这就是我的工作方式.老实说,我不记得为什么我需要这样做,可能有更好的方法.但如果它对你有所帮助就是代码.我依稀记得因为没有一种简单的方法将你的结果作为一个对象而烦恼.// returns an array of objects public function stmtFetchObject(){ $rows=array(); //init // bind results to named array $meta = $this->stmt->result_metadata(); $fields = $meta->fetch_fields(); foreach($fields as $field) { $result[$field->name] = ""; $resultArray[$field->name] = &$result[$field->name]; } call_user_func_array(array($this->stmt,'bind_result'),$resultArray); // create object of results and array of objects while($this->stmt->fetch()) { $resultObject = new stdClass(); foreach ($resultArray as $key => $value) { $resultObject->$key = $value; } $rows[] = $resultObject; } return $rows; } (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |