我对mysqli
完全陌生,我采用了生成的代码并根据需要进行了调整。
更新:
public function getServeurByName($string) {
$stmt = mysqli_prepare($this->connection, "SELECT * FROM $this->tablename where GSP_nom=?");
$this->throwExceptionOnError();
mysqli_stmt_bind_param($stmt, 's', $string);
$this->throwExceptionOnError();
mysqli_stmt_execute($stmt);
$this->throwExceptionOnError();
$rows = array();
mysqli_stmt_bind_result($stmt, $row->idServ, $row->GSP_nom, $row->IPserv, $row->port, $row->tickrate, $row->membre, $row->nomPays, $row->finContrat, $row->actif, $row->timestamp, $row->type, $row->jeux, $row->slot, $row->ipClient, $row->essai, $row->reussite, $row->echec, $row->valide, $row->email);
while (mysqli_stmt_fetch($stmt)) {
$row->timestamp = new DateTime($row->timestamp);
$rows[] = $row;
$row = new stdClass();
mysqli_stmt_bind_result($stmt, $row->idServ, $row->GSP_nom, $row->IPserv, $row->port, $row->tickrate, $row->membre, $row->nomPays, $row->finContrat, $row->actif, $row->timestamp, $row->type, $row->jeux, $row->slot, $row->ipClient, $row->essai, $row->reussite, $row->echec, $row->valide, $row->email);
}
mysqli_stmt_free_result($stmt);
mysqli_close($this->connection);
return $rows;
}
问题,这个我拿模板的例子只返回一行而不是所有记录。
如何解决这个问题?
edit2:
print_r($row) show :
stdClass Object ( [idServ] => 0 [GSP_nom] => [IPserv] => [port] => 0 [tickrate] => 0 [membre] => [nomPays] => [finContrat] => [actif] => 0 [timestamp] => [type] => 0 [jeux] => 0 [slot] => 0 [ipClient] => [essai] => 0 [reussite] => 0 [echec] => 0 [valide] => 0 [email] => ) stdClass Object ( [idServ] => 0 [GSP_nom] => [IPserv] => [port] => 0 [tickrate] => 0 [membre] => [nomPays] => [finContrat] => [actif] => 0 [timestamp] => [type] => 0 [jeux] => 0 [slot] => 0 [ipClient] => [essai] => 0 [reussite] => 0 [echec] => 0 [valide] => 0 [email] => ) stdClass Object ( [idServ] => 0 [GSP_nom] => [IPserv] => [port] => 0 [tickrate] => 0 [membre] => [nomPays] => [finContrat] => [actif] => 0 [timestamp] => [type] => 0 [jeux] => 0 [slot] => 0 [ipClient] => [essai] => 0 [reussite] => 0 [echec] => 0 [valide] => 0 [email] => ) stdClass Object ( [idServ] => 0 [GSP_nom] => [IPserv] => [port] => 0 [tickrate] => 0 [membre] => [nomPays] => [finContrat] => [actif] => 0 [timestamp] => [type] => 0 [jeux] => 0 [slot] => 0 [ipClient] => [essai] => 0 [reussite] => 0 [echec] => 0 [valide] => 0 [email] => ) stdClass Object ( [idServ] => 0 [GSP_nom] => [IPserv] => [port] => 0 [tickrate] => 0 [membre] => [nomPays] => [finContrat] => [actif] => 0 [timestamp] => [type] => 0 [jeux] => 0 [slot] => 0 [ipClient] => [essai] => 0 [reussite] => 0 [echec] => 0 [valide] => 0 [email] => ) stdClass Object ( [idServ] => 0 [GSP_nom] => [IPserv] => [port] => 0 [tickrate] => 0 [membre] => [nomPays] => [finContrat] => [actif] => 0 [timestamp] => [type] => 0 [jeux] => 0 [slot] => 0 [ipClient] => [essai] => 0 [reussite] => 0 [echec] => 0 [valide] => 0 [email] => )
/ 的print_r($行);示出了
Array ( [0] => stdClass Object ( [idServ] => 190 [GSP_nom] => bc2x [IPserv] => 85.234.212.181 [port] => 27015 [tickrate] => 100 [membre] => [nomPays] => Belgique [finContrat] => 20111231 [actif] => 1 [timestamp] => DateTime Object ( ) [type] => 1 [jeux] => 1 [slot] => 34 [ipClient] => 81.240.221.92 [essai] => 6 [reussite] => 0 [echec] => 0 [valide] => 1 [email] => ) [1] => stdClass Object ( [idServ] => 191 [GSP_nom] => bc2x [IPserv] => 85.234.212.185 [port] => 27028 [tickrate] => 100 [membre] => LowReal [nomPays] => Belgique [finContrat] => 20111127 [actif] => 1 [timestamp] => DateTime Object ( ) [type] => 2 [jeux] => 1 [slot] => 11 [ipClient] => 81.240.221.92 [essai] => 6 [reussite] => 0 [echec] => 0 [valide] => 1 [email] => ) [2] => stdClass Object ( [idServ] => 192 [GSP_nom] => bc2x [IPserv] => 91.121.27.79 [port] => 27033 [tickrate] => 100 [membre] => LowReal [nomPays] => Belgique [finContrat] => 20110915 [actif] => 1 [timestamp] => DateTime Object ( ) [type] => 2 [jeux] => 1 [slot] => 11 [ipClient] => 81.240.221.92 [essai] => 6 [reussite] => 0 [echec] => 0 [valide] => 1 [email] => ) [3] => stdClass Object ( [idServ] => 443 [GSP_nom] => bc2x [IPserv] => 193.105.73.249 [port] => 27069 [tickrate] => 100 [membre] => [nomPays] => France [finContrat] => 20111231 [actif] => 1 [timestamp] => DateTime Object ( ) [type] => 2 [jeux] => 1 [slot] => 12 [ipClient] => 81.241.72.19 [essai] => 6 [reussite] => 2 [echec] => 6 [valide] => 1 [email] => lowreal@skynet.be ) [4] => stdClass Object ( [idServ] => 468 [GSP_nom] => bc2x [IPserv] => 213.246.45.17 [port] => 27005 [tickrate] => 100 [membre] => admin [nomPays] => France [finContrat] => 20110302 [actif] => 1 [timestamp] => DateTime Object ( ) [type] => 1 [jeux] => 1 [slot] => 12 [ipClient] => 127.0.0.1 [essai] => 0 [reussite] => 0 [echec] => 0 [valide] => 1 [email] => anxious@orange.fr ) [5] => stdClass Object ( [idServ] => 470 [GSP_nom] => bc2x [IPserv] => 213.246.45.17 [port] => 27005 [tickrate] => 100 [membre] => admin [nomPays] => Allemagne [finContrat] => 20110811 [actif] => 1 [timestamp] => DateTime Object ( ) [type] => 2 [jeux] => 1 [slot] => 12 [ipClient] => 127.0.0.1 [essai] => 0 [reussite] => 0 [echec] => 0 [valide] => 1 [email] => anxious@orange.fr ) )
答案 0 :(得分:1)
我自己没有使用过mysqli,但对我而言,问题就在这里:
if(mysqli_stmt_fetch($stmt)) {
$row->timestamp = new DateTime($row->timestamp);
return $row;
} else {
return null;
}
也许是这样的事情(不保证这会在没有修改的情况下工作,并且它肯定会违反你通过返回一个空数组返回0结果的null的合同..根据你的需要调整):
$arr = array();
while (mysqli_stmt_fetch($stmt)) {
// copy data from $row to $arr
}
return $arr;
如果您遇到$ arr元素内容的问题,也许这里的讨论会有所帮助:http://php.net/manual/en/mysqli-stmt.fetch.php