我正在尝试用PHP构建一个简单的数据库类,我使用的是MySQL。
现在我已经卡住了,我不知道如何从数据库中显示一行结果。我已经解决了如何从数据库中获取多个行的问题,但现在我尝试只显示一个行,比如用户名、电子邮件、级别、reg_date。
我的代码:
class Database {
public $mysql;
function __construct()
{
$this->mysql = new mysqli(host, user, password, db) or die('There was a problem connecting to the db');
}
function multiLine($sql)
{
$this->mysql->query("SET NAMES 'utf8'");
$this->mysql->query("SET CHARACTER SET 'utf8'");
if(($result = $this->mysql->query($sql)) != NULL) {
$x = array();
while($row = $result->fetch_array()) {
$x[] = $row;
}
return $x;
}
else {
echo $this->mysql->error;
}
}
function singleLine($sql)
{
$one = array();
if(($one = $this->mysql->query($sql)) != NULL)
{
$one = $result->fetch_array(); // Error here
}
return $one;
}
function __destruct() {
// close out the database connection;
$this->mysql->close();
}
}
我的函数multiLine是这样工作的,我是这样使用它的:
$db = new Database();
$sql = 'SELECT * FROM users ORDER BY id DESC';
$response = $db->multiLine($sql);
<?php foreach($response as $r) : ?>
<p>ID: <?php echo $r['id']; ?></p>
<p>Username: <?php echo $r['username']; ?></p>
<?php endforeach; ?>
那么,谁能给我一个如何解决这个问题的提示?也许有人有一个用PHP制作数据库类的很好的教程链接。
发布于 2010-12-19 18:38:14
if(($one = $this->mysql->query($sql)) != NULL)
应该是
if(($result = $this->mysql->query($sql)) != NULL)
发布于 2010-12-19 18:24:35
我不明白有什么问题,为什么不在查询中添加LIMIT 1
发布于 2010-12-19 18:30:34
为了将结果强制显示为一行,查询末尾的LIMIT 1
将执行此操作。
如果您希望在将结果发送到multiLine()或singleLine()之前检查结果是否恰好是一行,mysql_num_rows
会告诉您查询中有多少行。
我不知道为什么要以不同的方式处理它们,因为调用它的代码必须检查它是返回一个数组还是一个对象。回报应该是一致的。
https://stackoverflow.com/questions/4484404
复制