Я новичок в 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()
. Может ли кто-нибудь сказать мне, как это исправить?
У вас несколько ошибок.
Первое:
INSERT INFO files
^
который должен читать как INTO
а не INFO
. T
и F
близки друг к другу на клавиатуре, так что это может произойти.
Затем echo $db->error();
который должен считываться как echo $db->error;
Это должен быть объектно-ориентированный стиль, а не процедурный стиль.
Не существует метода с именем error. Существует переменная с именем error. Таким образом, изменение
echo $db->error();
в
echo $db->error;
INSERT INFO files
вы уверены в этом? Кодирование на iPhone? лол опечатка не так ли? Они всегда есть.