现在我正在使用Mysqli从Mysql数据库中检索数据,使用的代码很难理解,而且根据我的理解,折旧函数或整个本身都是折旧的。 如果我可以从我的Qoal中获取一些洞察力和一些更新的技术,从mysql数据库中检索数据。
到目前为止我所拥有的是:
$param = 1;
$mysqli = new mysqli("127.0.0.1", "user", "password", "databaseName");
$mysqli->query('SELECT reply_id FROM replies WHERE reply_topic = ? ORDER BY reply_date ASC');
$mysqli->bind_param('i',$param)
$mysqli->execute();
$row = bind_result_array($mysqli);
while($mysqli->fetch()){
$set[$row['']] = getCopy($row);
}
$mysqli->free_result();
return $set;
function bind_result_array($stmt)
{
$meta = $stmt->result_metadata();
$result = array();
while ($field = $meta->fetch_field())
{
$result[$field->name] = NULL;
$params[] = &$result[$field->name];
}
call_user_func_array(array($stmt, 'bind_result'), $params);
return $result;
}
function getCopy($row)
{
return array_map(create_function('$a', 'return $a;'), $row);
}
答案 0 :(得分:2)
您需要先清理数据库上的调用。 $mysqli->query
在绑定参数之前发送了查询,依此类推。
替换为以下内容;
$stmt = $mysqli->prepare('SELECT reply_id FROM replies WHERE reply_topic = ? ORDER BY reply_date ASC');
$stmt->bind_param('i',$param)
$stmt->execute();
$mysqli->prepare
返回一个新对象,您应该将值绑定到然后执行。它避免了SQL injection!
这些都不是折旧的。 mysqli_
正是您应该使用的。
您只需要一个结果数组,您可以使用以下代码执行此操作 - 无需用户功能。
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
$set[] = $row['reply_id'];
}
对于while
中的每一行,每个字段都保存到一个数组中,列名为键。因此$row['reply_id']
包含数据库中reply_id
列的值。上面我已将此值保存到名为$set
的数组中,当它循环到下一个结果行时,它也将下一个值保存到该数组中。
您可以根据需要在保存到新数组之前或之后操作结果。
希望这有帮助。