我有兩個存儲相同數據的表。一個用於活動用戶,另一個用於非活動用戶。當用戶來到時,它將在活動表中進行搜索,如果未找到,則在非活動表中進行搜索。如果在非活動表中找到用戶信息,則應將其移至活動表並從非活動表中刪除。
這些表格有一列存儲照片。當我嘗試插入的信息,活動表,我得到以下錯誤:將圖像從一個SQL服務器表移動到另一個
SQLSTATE[22018]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Operand type clash: nvarchar(max) is incompatible with image
我相信這是由光造成的,因爲如果用戶信息沒有照片,此舉是成功的。但是當有照片時,它會因上述錯誤而失敗。
創建該表的SQL:
CREATE TABLE [dbo].[tblBackup](
[Id] [int] IDENTITY(1,1) NOT NULL,
[DriverId] [int] NULL,
[FirstNameAmh] [nvarchar](100) NULL,
[FatherNameAmh] [nvarchar](100) NULL,
[GrandNameAmh] [nvarchar](100) NULL,
[Photo] [image] NULL
)
下面是代碼:
$dbc->beginTransaction();
$sql = "select * from tblBackup where Id=?";
$stmt = $dbc->prepare($sql);
$stmt->bindParam(1, $_GET["gid"]);
$stmt->execute();
$row = $stmt->fetch();
$ins = "insert into tblActive(Id, DriverId, FirstNameAmh, FatherNameAmh, GrandNameAmh, Photo) values(?, ?, ?, ?, ?, ?)";
$st = $dbc->prepare($ins);
$val = array($row['Id'], $row['DriverId'], $row['FirstNameAmh'], $row['FatherNameAmh'], $row['GrandNameAmh'], $row['Photo']);
$st->execute($val);
$sql = "delete from tblBackup where Id=?";
$stmt = $dbc->prepare($sql);
$stmt->bindParam(1, $_GET["gid"]);
$stmt->execute();
$dbc->commit();
編輯:
我的結論是,由PHP檢索到的照片數據被視爲nvarchar的(最大)類型而不是SQL服務器的圖像類型。因此,SQL服務器抱怨說它無法在圖像數據類型列中插入nvarchar(max)。有沒有辦法解決這個問題?
看起來你試圖插入一個圖像到nvarchar字段 – paqash
錯誤是一種欺騙。我確信,在設計桌子時,照片欄設置爲「圖像」。 – birraa
好的,向我們展示表格結構和代碼 – paqash