«Неверный синтаксис рядом» в значении file_get_contents при загрузке изображения в поле varbinary на сервере sql - PullRequest
1 голос
/ 11 июля 2019

Я хочу сохранить изображение в базе данных.Я использую PHP 5.3, Jquery и SQL Server.Я использую поле VARBINARY (MAX) для хранения моего файла.Но он всегда возвращает «Неверный синтаксис рядом» в формате файловой строки.

Я прочитал все решения из stackoverflow и т. Д., Но ничего не получилось.

Это мой код

<?php
include "../../system/conn.php";
$xuser_id = $_POST['xuser_id'];
$xusername = $_POST['xusername'];
$xpassword = md5($_POST['xpassword']);
$xrealname = $_POST['xrealname'];
$xgrup_id= $_POST['xgrup_id'];
$stat = $_POST['stat'];
$ttd = file_get_contents($_FILES['file']['tmp_name']);

$query = "EXECUTE [dbo].[sp_pengguna] '$xuser_id','$xusername','$xpassword','$xrealname','','','$xgrup_id','','','$stat','$ttd'";



$input = mssql_query($query) or die(mssql_get_last_message());

print_r($input);

?>

и это моя таблица table

и это моя функция

ALTER PROCEDURE  [dbo].[sp_pengguna] 
    @user_id nvarchar(50), 
    @username nvarchar(20),
    @password nvarchar(50),
    @realname nvarchar(50),
    @last_login nvarchar(50),
    @last_login_ip nvarchar(50),
    @grup_id nvarchar(50),
    @input_date datetime,
    @last_update datetime,
    @stat varchar(20),
        @ttd varbinary(max)
AS 
    SET NOCOUNT ON;
    if @stat = 'delete' and @user_id<>''
        begin
            DELETE FROM [dbo].[pengguna]
                  WHERE [user_id] = @user_id
        end
    else
        begin   
        if @user_id='' 
            begin
                INSERT INTO [dbo].[pengguna]
                           ([user_id]
                           ,[username]
                           ,[password]
                           ,[realname]
                           ,[last_login]
                           ,[last_login_ip]
                           ,[grup_id]
                           ,[input_date]
                           ,[last_update]
                                ,[ttd_pengguna]
                                )
                     VALUES
                           (NEWID()
                           ,@username
                           ,@password
                           ,@realname
                           ,@last_login
                           ,@last_login_ip
                           ,@grup_id
                           ,GETDATE()
                           ,GETDATE()
                                ,@ttd
                           )
            end
        else 
            begin
                UPDATE [dbo].[pengguna]
                   SET [username]   = @username
                      ,[password]   = @password
                      ,[realname]   = @realname
                      ,[grup_id]    = @grup_id
                      ,[last_update]= @last_update
                        ,[ttd_pengguna] = @ttd
                 WHERE [user_id]    = @user_id
            end
    end;

, когда я пытаюсь загрузить изображение, оно всегдавозвращает «Неверный синтаксис рядом» это при попытке загрузить изображение PNG enter image description here

это при попытке загрузить изображение JPEG enter image description here

Iпонятия не имею об этом, у кого-нибудь есть решения?

1 Ответ

0 голосов
/ 12 июля 2019

решено, я просто конвертирую изображение в строку base64 и в процедуре использую параметр с типом varchar (не используйте nvarchar), а затем преобразую его в varbinary

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...