0

Поблема с выполнением sql запроса, вот код,возвращает ошибку

Warning: mysqli_error() expects parameter 1 to be mysqli, string given in E:\OpenServer\domains\demo\templates\admin\uploadGallery.php on line 43

я не понимаю в чем ошибка, ведь первый параметр mysqli и в Google найти решения не получилось.

<?php
   $connect = mysqli_connect("localhost", "root", "", "cms");  
   $sql = "INSERT INTO images_path ( name, pathTo, type) VALUES ($name,$pathTo,$type)";
   $pathTo = "post-images/gallery/";
   $name = $_FILES['filename']['name'];
   $type = $_FILES['filename']['type'];
   $types = array('image/gif', 'image/png', 'image/jpeg', 'image/pjpeg','image/jpg' );
   if($_FILES["filename"]["size"] > 1024*3*1024 && !in_array($_FILES['file']['type'], $types))
   {
      echo ("Размер файла превышает три мегабайта или недопустимый формат");
      exit;
   }
   if(is_uploaded_file($_FILES["filename"]["tmp_name"]))
   {

      move_uploaded_file($_FILES["filename"]["tmp_name"],"$pathTo".$_FILES["filename"]["name"]);
      mysqli_query($connect,$sql) or mysqli_error($sql);
      echo("Ееее роцк!!");
   } else {
      echo("Ошибка загрузки файла");
   }
?>
Yuri
  • 15,957
vovaxxx
  • 301
  • 1
    строку c $sql нужно поместить ниже обьявления переменных – G.Denis Dec 19 '16 at 15:06
  • все равно не помогает, я как угодно уже игрался – vovaxxx Dec 19 '16 at 15:09
  • А в какой строке ошибка? И потом, почему вы не проверяете удачно ли подключился mysqli ? Надо проверить не null ли $connect хотя-бы.. Или в try-catch поставить подключение... – Michael Vaysman Dec 19 '16 at 15:11
  • 1
    INSERT INTO images_path ( `name`, `pathTo`, `type`) VALUES ('$name','$pathTo', '$type') – G.Denis Dec 19 '16 at 15:12
  • http://ru.stackoverflow.com/q/423439/186083 – Visman Dec 19 '16 at 16:31

1 Answers1

6

Во-первых, как указал @G.Denis, "строку c $sql нужно поместить ниже объявления переменных", иначе у Вас $sql === 'INSERT INTO images_path ( name, pathTo, type) VALUES (,, )'; - явно не то, чего вы ожидали.
Так же переменные внутри $sql нужно поместить в одинарные кавычки.

Во-вторых, mysqli_error($sql); - вы в функцию передаёте $sql, то есть строку, а нужно передавать $connect.

  • 2
    Про mysqli_error верно, еще переменные внутри $sql нужно поместить в одинарные кавычки – G.Denis Dec 19 '16 at 15:14
  • Благодарю, уже второй раз выручаете) в следующий раз постараюсь быть внимательнее – vovaxxx Dec 19 '16 at 15:18