我一直在寻找教程和示例,但我没有想到如何在数据库中查找字段。 有人可以检查一下我做了什么吗? THX。
数据库连接
public function __construct($db)
{
//conexion
$connection = @mysql_connect('localhost', 'root','','noticias') or die('Connection error -> ' . mysql_error());
mysql_select_db("noticias", $connection) or die('Database error -> ' . mysql_error());
}
我需要通过id
找到public function find($id)
{
$usuario = mysqli_query($connection, 'SELECT usuario FROM noticia WHERE id ='.$id);
$result=mysqli_query($connection, "SELECT * from noticia WHERE id =".$id);
while ($row=mysqli_fetch_array($result))
{
$noticia->setTitulo("titulo");
$noticia->setCuerpo("cuerpo");
$noticia->setUsuario($usuario);
}
}
所以,我改变了代码,并添加了类,以便更清楚。
class NoticiaRepository
{
public function __construct($db)
{
//conexion
$connection = @mysqli_connect('localhost', 'root','','noticias') or die('Connection error -> ' . mysqli_error($connection));
}
public function find($id)
{
$this->connection = $connection;
$usuario = mysqli_query($connection, 'SELECT usuario FROM noticia WHERE id ='.$id);
$result=mysqli_query($connection, "SELECT * from noticia WHERE id =".$id);
while ($row=mysqli_fetch_array($result))
{
$noticia->setTitulo($row["titulo"]);
$noticia->setCuerpo($row["cuerpo"]);
$noticia->setUsuario($row[$usuario]);
}
}
}
$ noticiasRepository = new NoticiasRepository(); $ noticias = $ noticiasRepository-> find($ id);
//print_r($noticias);
答案 0 :(得分:1)
你的代码中有很多不正确的东西。我的假设是NoticiasRepository
是您需要设置从find
函数获得的各种值的类。
我不仅仅是为你重写整个功能,而是指出所有问题都存在于哪里,这样你就可以阅读,并弄清楚如何自己修复它 - 没有什么比动手学习更好了:)< / p>
$usuario = mysqli_query($connection, 'SELECT usuario FROM noticia WHERE id ='.$id);
mysqli_query函数的结果是resultset
。然后,您需要使用mysqli_fetch_array
,mysqli_fetch_row
或mysqli_fetch_assoc
等函数从此结果集中检索值。完成后,您将获得所需的值。您需要将这些值传递给函数。
换句话说:
$noticia->setTitulo("titulo");
会像
$noticia->setTitulo($row["titulo"]);
这是因为你做了以下事情:
$result=mysqli_query($connection, "SELECT * from noticia WHERE id =".$id);
//above code takes the result of your query and puts it in variable $query
while ($row=mysqli_fetch_array($result)) { ...
//you loop this $result variable and fetch each row into an array named $row
//so titulo is accessible as $row[titulo]
另外,看看@ bridge45说的是什么,你的$ connection变量确实没有任何影响,就像当前使用它一样。
修改强>
您正在使用mysql_
和mysqli_
函数混合MySQL API。
那些不同的API不会混合在一起。
因此您必须更改以下内容:
$connection = @mysql_connect('localhost', 'root','','noticias') or die('Connection error -> ' . mysql_error());
mysql_select_db("noticias", $connection) or die('Database error -> ' . mysql_error());
为:
$connection = @mysqli_connect('localhost', 'root','','noticias') or die('Connection error -> ' . mysqli_error($connection));
因为您已经在使用数据库noticias
的第4个参数。
您还应该将or die(mysqli_error($connection))
添加到mysqli_query()
以便发现错误。
答案 1 :(得分:0)
你应该将'$ connection'更改为$ this-&gt;连接!我想一切都会好的!也许你可以尝试一下!