Вставка изображения в sqlserver дает «конфликт типов операндов» - PullRequest
0 голосов
/ 04 апреля 2010

Я пытаюсь сохранить изображение в базе данных SQL Server 2000. Тип данных столбца image.

Я получаю следующую ошибку:

Ошибка: предупреждение: odbc_exec () [function.odbc-exec]: ошибка SQL: [Microsoft] [ODBC SQL Server Драйвер] [SQL Server] Тип операнда clash: текст несовместим с изображением, SQL состояние 22005 в SQLExecDirect в C: \ xampp \ htdocs \ test \ upload.php на строка 25 Ошибка, запрос не выполнен

Вот код:

Загрузка изображения:

<?php

    include('config.php');

    if(is_uploaded_file($_FILES['userfile']['tmp_name']))
    {
        $fileName = $_FILES['userfile']['name'];
        $tmpName  = $_FILES['userfile']['tmp_name'];
        $fileSize = $_FILES['userfile']['size'];
        $fileType = $_FILES['userfile']['type'];

        $size = filesize($tmpName);
        set_magic_quotes_runtime(0);//to desactive the default escape spacials caracters made by PHP in the externes files

        $img_binaire = base64_encode(fread(fopen(str_replace("'","''",$tmpName), "r"), $size));

        $query = "INSERT INTO test_image (image_name, image_content, image_size) ".
        "VALUES ('{$fileName}','{$img_binaire}', '{$size}')";

        odbc_exec($conn, $query) or die('Error, query failed'); 

        echo "<br>File $fileName uploaded<br>";
        echo "<br>File Size: $fileSize <br>";
    } 
?>

Показ изображения:

<?php
    include('config.php');

    $sql = "select * from test_image where id =2";
    $rsl = odbc_exec($conn, $sql);
    $image_info = odbc_fetch_array($rsl);
    //$count = sizeof($image_info['image_content']);


    //header('Accept-Ranges: bytes');
    //header('Content-Length: '.$image_info['image_size']);
    //header("Content-length: 17397");
    header('Content-Type: image/jpeg'); 
    echo base64_decode($image_info['image_content']);

    //echo bindec($image_info['image_content']);
?>

Что мне нужно сделать по-другому?

1 Ответ

0 голосов
/ 04 апреля 2010

У вас есть хотя бы одна ошибка: base64_encode(fread(fopen(str_replace("'","''",$tmpName), "r"), $size)); str_replace должен быть удален, так как это может испортить ваши данные.

Могут быть и другие ошибки. Вы должны отладить свой код.

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