Я искал учебники и примеры, но я не мог понять, как найти поля в базе данных.
Может ли кто-нибудь проверить, все ли в порядке, что я сделал? Спасибо.
Подключение к базе данных
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());
}
Мне нужно найти по идентификатору
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);
В вашем коде много неправильного. Я предполагаю, что NoticiasRepository
это класс, к которому вам нужно установить различные значения, которые вы получаете от find
функция.
Вместо того, чтобы просто переписать всю функцию для вас, я просто указываю, где есть все проблемы, чтобы вы могли прочитать и выяснить, как это исправить самостоятельно — нет ничего лучше, чем практическое обучение 🙂
$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 API, используя mysql_
а также mysqli_
функции.
Эти разные 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));
так как вы уже используете 4-й параметр для вашей БД noticias
,
Вы также должны добавить or die(mysqli_error($connection))
в mysqli_query()
чтобы ловить ошибки.
Вы должны изменить ‘$ connection’ на $ this-> connection! Я думаю, все будет хорошо! Может быть, вы можете попробовать это!