2016-04-06 3 views
1

Пытается записать загрузку изображения в mysql через php,
, пытаясь использовать идентификатор пользователя для ОБНОВЛЕНИЯ строки.
Однако, продолжает давать эту ошибку:mysql Запрос UPDATE не работает для загрузки изображения через php

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(image_type,image, image_size, image_name) VALUES ('images/1459926006.png','png'' at line 1

Просто не может увидеть, что это ошибка синтаксиса.

PHP:

function upload(){ 
/*** check if a file was uploaded ***/ 
if(is_uploaded_file($_FILES['userfile']['tmp_name']) && getimagesize($_FILES['userfile']['tmp_name']) != false) 
    { 
    /*** get the image info. ***/ 
    $size = getimagesize($_FILES['userfile']['tmp_name']); 
    /*** assign our variables ***/ 
    $type = $size['mime']; 
    $imgfp = fopen($_FILES['userfile']['tmp_name'], 'rb'); 
    $size = $size[3]; 
    $name = $_FILES['userfile']['name']; 
    $maxsize = 99999999; 


    /*** check the file is less than the maximum file size ***/ 
    if($_FILES['userfile']['size'] < $maxsize) 
     { 
     /*** connect to db ***/ 
     $dbh = new PDO("mysql:host=localhost;dbname=table", 'username', 'password'); 

       /*** set the error mode ***/ 
       $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

      /*** our sql query ***/ 
     $stmt = $dbh->prepare("UPDATE users (image_type,image, image_size, image_name) VALUES (?,?,?,?) WHERE user_id=?"); 

     /*** bind the params ***/ 
     $stmt->bindParam(1, $type); 
     $stmt->bindParam(2, $imgfp, PDO::PARAM_LOB); 
     $stmt->bindParam(3, $size); 
     $stmt->bindParam(4, $name); 
     $stmt->bindParam(4, $name); 
     $stmt->bindParam(5, $_SESSION['user_id']); 

     /*** execute the query ***/ 
     $stmt->execute(); 
     } 
    else 
     { 
     /*** throw an exception is image is not of type ***/ 
     throw new Exception("File Size Error"); 
     } 
    } 
else 
    { 
    // if the file is not less than the maximum allowed, print an error 
    throw new Exception("Unsupported Image Format!"); 
    } 
} 
?> 

ответ

2

Не используйте update queryinsert query, как синтаксис и отличаются

Изменить

$stmt = $dbh->prepare("UPDATE users (image_type,image, image_size, image_name) VALUES (?,?,?,?) WHERE user_id=?"); 

в

$stmt = $dbh->prepare("UPDATE users SET image_type=?, image=?, image_size=1 ,image_name=? WHERE user_id=?"); 

И ар е связывание $stmt->bindParam(4, $name); два раза

$stmt->bindParam(1, $type); 
     $stmt->bindParam(2, $imgfp, PDO::PARAM_LOB); 
     $stmt->bindParam(3, $size); 
     $stmt->bindParam(4, $name); 
     // $stmt->bindParam(4, $name);// comment it 
     $stmt->bindParam(5, $_SESSION['user_id']); 

Проверить Update query syntax

+0

В настоящее время ошибок нет, но до сих пор нет обновлений. Должен быть неправильный идентификатор пользователя. – Kez

+0

Да, проверьте свой идентификатор сеанса! убедитесь, что вы начали сеанс в верхней части страницы! – Saty

+0

lol :) Я убедился, что знаю. но я предполагаю, что неправильно ссылаюсь на него. – Kez

1

Вашего синтаксис обновление SQL-запрос неправильно. Измените запрос, как показано ниже:

От:

$stmt = $dbh->prepare("UPDATE users (image_type,image, image_size, image_name) VALUES (?,?,?,?) WHERE user_id=?"); 

Изменить на:

UPDATE `users` 
    SET `image_type` = ?, 
     `image` = ?, 
     `image_size` = ?, 
     `image_name` = ? 
WHERE `user_id` = ? 

Попробуйте сейчас !!!!!

+0

Ваше решение также верно! – Saty

Смежные вопросы