Ошибка при выводе, что пропустил?
вот код:
<?php
$mysqli = new mysqli('localhost', 'root', '', 'kinomonster');
if(mysqli_connect_errno()) {
prinf("Соединение не установлено", mysqli_connect_error());
exit();
}
$mysqli->mysqli_set_charset('utf8');
$query = $mysqli->query('SELECT * FROM movie');
while ( $row =mysqli_fetch_assoc($query) ) {
echo $row['name'];
}
$mysqli->close();
?>
вот ошибка:
Fatal error: Uncaught Error: Call to undefined method mysqli::mysqli_set_charset() in C:\xampp\htdocs\kinomonster\index.php:10 Stack trace: #0 {main} thrown in C:\xampp\htdocs\kinomonster\index.php on line 10
9 ответов
У меня php сейчас стоит 7.2, достаточно свежая, все нормально.
Дамп mysql
-- phpMyAdmin SQL Dump
-- version 4.8.5
-- https://www.phpmyadmin.net/
--
-- Host: db
-- Generation Time: Nov 06, 2019 at 01:36 AM
-- Server version: 10.4.6-MariaDB
-- PHP Version: 7.2.14
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `kinomonster`
--
-- --------------------------------------------------------
--
-- Table structure for table `movie`
--
CREATE TABLE `movie` (
`id` int(5) NOT NULL,
`name` varchar(255) NOT NULL,
`descriptions` text NOT NULL,
`year` int(4) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Dumping data for table `movie`
--
INSERT INTO `movie` (`id`, `name`, `descriptions`, `year`) VALUES
(1, 'The Matrix', 'это матрица', 1999);
--
-- Indexes for dumped tables
--
--
-- Indexes for table `movie`
--
ALTER TABLE `movie`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `movie`
--
ALTER TABLE `movie`
MODIFY `id` int(5) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Код:
<?php
$mysqli = new mysqli('localhost', 'root', '123123', 'kinomonster');
if(mysqli_connect_errno()) {
printf("Соединение не установлено", mysqli_connect_error());
exit();
}
$mysqli->set_charset('utf8');
$query = $mysqli->query('SELECT * FROM movie');
while ( $row = mysqli_fetch_assoc($query) ) {
echo $row['name'];
}
$mysqli->close();
?>
База данных у тебя точно 'kinomonster' называется? Это последний параметр подключения к базе данных:
$mysqli = new mysqli('localhost', 'root', '', 'kinomonster');
У меня ошибка такая была, когда я в подключении к БД просто писал так, без указания базы данных:
$mysqli = new mysqli('localhost', 'root', '123123');
Access denied for user 'root'@'localhost' (using password: YES)
пользователь или пароль неверный указан в соединение с вашей базой данных. Проверяйте вашу phpmyadmin внимательно.
Как выше уже писали, вам проблема в подключении у вас:
$mysqli = new mysqli('localhost', 'root', '', 'kinomonster');
Вставьте вывод показа ошибок и смотрите, что говорит:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
С вашим кодом это будет так:
<?php
$mysqli = new mysqli('localhost', 'root', '', 'kinomonster');
if(mysqli_connect_errno()) {
printf("Соединение не установлено", mysqli_connect_error());
exit();
}
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli->set_charset('utf8');
$query = $mysqli->query('SELECT * FROM movie');
while ( $row = mysqli_fetch_assoc($query) ) {
echo $row['name'];
}
$mysqli->close();
?>
теперь пишет;
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, bool given in C:\xampp\htdocs\kinomonster\index.php on line 14
вот код;,
<?php
$mysqli = new mysqli('localhost', 'root', '', 'kinomonster');
if(mysqli_connect_errno()) {
prinf("Соединение не установлено", mysqli_connect_error());
exit();
}
$mysqli->set_charset('utf8');
$query = $mysqli->query('SELECT * FROM movie');
while ( $row =mysqli_fetch_assoc($query) ) {
echo $row['name'];
}
$mysqli->close();
?>
P.S все таки версии отличаются
код:
<?php
$mysqli = new mysqli('localhost', 'root', ' ', 'kinomonster');
if(mysqli_connect_errno()) {
printf("Соединение не установлено", mysqli_connect_error());
exit();
}
$mysqli->set_charset('utf8');
$query = $mysqli->query('SELECT * FROM movie');
while ( $row = mysqli_fetch_assoc($query) ) {
echo $row['name'];
}
$mysqli->close();
?>
вывод:
Warning: mysqli::__construct(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES) in C:\xampp\htdocs\kinomonster\index.php on line 3
Соединение не установлено
P.S
БД kinomonster
Помогите не могу продолжить обучение!
код
<?php
$mysqli = new mysqli('localhost', 'root', '', 'kinomonster');
if(mysqli_connect_errno()) {
printf("Соединение не установлено", mysqli_connect_error());
exit();
}
$mysqli->set_charset('utf8');
$query = $mysqli->query('SELECT * FROM movie');
while ( $row = mysqli_fetch_assoc($query) ) {
echo $row['name'];
}
$mysqli->close();
?>
пишет
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, bool given in C:\xampp\htdocs\kinomonster\index.php on line 14
уже не знаю, что делать(
phpmyadmin так же как на видео настроено
СПАСИБО ОГРОМНОЕ!
ВМЕСТО MOVIES. ПИСАЛ MOVIE
НЕ ВНИМАТЕЛЬНЫЙ!(
Вроде так должно быть:
$mysqli->set_charset("utf8");