mysqli :: error () не обнаружен

0

Я новичок в php, и у меня есть проблема, которую я не могу объяснить сам. У меня есть два файла: первый index.html:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8" />
</head>
<body>
    <form enctype="multipart/form-data" action="upload.php" method="post">
        <input name="file" type="file"/>
        <input type="submit" value="Wyslij" />
    </form>
</body>
</html>

а второй - upload.php:

<?php

if(isset($_FILES['file'])){
$db=new mysqli('localhost','root','kursphp','products');

    $name= $db->real_escape_string($_FILES['file']['name']);
    $type=$db->real_escape_string($_FILES['file']['type']);
    $data=$db->real_escape_string(file_get_contents($_FILES['file']['tmp_name']));
    $size=intval($_FILES['file']['size']);

    //question

    $query= "INSERT INFO files(name,type,size,data,created) VALUES ('{$name}','{$type}','{$size}','{$data}',NOW())";

    $result=$db->query($query);

    if($result){
    echo "File saved";
    } else {
        echo $db->error();
    }

    $db->close();
}

?>

Когда я загружаю файл, я получаю сообщение об ошибке:

Fatal error: Call to undefined method mysqli::error() in D:\wamp\www\php_z\upload\upload.php on line 20

Я не знаю, почему я получаю такую ошибку, потому что, как я заявил: db является объектом mysqli. Я читал в документации PHP, что

mysqli::$error -- mysqli_error — Returns a string description of the last error

Итак, есть метод такой error(). Может ли кто-нибудь сказать мне, как это исправить?

  • 1
    INSERT INFO files вы уверены в этом? Кодирование на iPhone? лол опечатка не так ли? Они всегда есть.
  • 0
    о боже я сделал ошибку INSERT INTO файлы, теперь она работает правильно. Я кодирую в VS, используя бесплатное расширение PHP для VS 2013, это очень плохо, я должен сказать ... Потому что я делаю такие глупые ошибки ... Кстати, THX!
Показать ещё 1 комментарий
Теги:
mysqli

3 ответа

2
Лучший ответ

У вас несколько ошибок.

Первое:

INSERT INFO files
         ^

который должен читать как INTO а не INFO. T и F близки друг к другу на клавиатуре, так что это может произойти.

Затем echo $db->error(); который должен считываться как echo $db->error;

Это должен быть объектно-ориентированный стиль, а не процедурный стиль.

0

Не существует метода с именем error. Существует переменная с именем error. Таким образом, изменение

echo $db->error();

в

echo $db->error;

0

Это не функция, ее переменная. Получите доступ к этому:

echo $db->error;

Прочитайте больше

Ещё вопросы

Сообщество Overcoder
Наверх
Меню