我需要使用PHP创建SQL搜索

时间:2014-10-20 15:45:08

标签: php sql terminal

我一直在寻找教程和示例,但我没有想到如何在数据库中查找字段。 有人可以检查一下我做了什么吗? 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);

2 个答案:

答案 0 :(得分:1)

你的代码中有很多不正确的东西。我的假设是NoticiasRepository是您需要设置从find函数获得的各种值的类。

我不仅仅是为你重写整个功能,而是指出所有问题都存在于哪里,这样你就可以阅读,并弄清楚如何自己修复它 - 没有什么比动手学习更好了:)< / p>

$usuario = mysqli_query($connection, 'SELECT usuario FROM noticia WHERE id ='.$id);

mysqli_query函数的结果是resultset。然后,您需要使用mysqli_fetch_arraymysqli_fetch_rowmysqli_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;连接!我想一切都会好的!也许你可以尝试一下!