事实证明,我有以下代码可以在 laravel 中使用 query builder 进行更新。
public function editarCedente(Request $request)
{
$id_cedente_e = $request->id_cedente_edit;
$nombre_cedente_e = $request->edit_nombre_cede;
$path = $request->file('edita_imagen_cedente');
$imagen_cedente_e = File::get($path);
//llamo a la funcion estatica de un archivo que he creado
//para el Procedimiento alamacenado
$edita_cedente = S_Update_Cedente::get_update_cedente($id_cedente_e,$nombre_cedente_e,base64_encode($imagen_cedente_e));
return redirect()->route('cedentes');
}
这是静态函数
public static function get_update_cedente($id_cedente_e,$nombre_cedente_e,$imagen_cedente_e)
{
$update_cedente = DB::select('exec S_Update_Cedente '.$id_cedente_e.', "'.$nombre_cedente_e.'", "'.$imagen_cedente_e.'" ');
return $update_cedente;
}
它给我的错误如下:
所以我不知道如果我做错了什么或者我需要另一种方法来做到这一点会是什么,数据库中的数据类型如下sql server:
- id_grantor类型
int
。 - 授予者名称 类型
varchar
。 - image_cedent类型
image
PS:需要在数据库中以base 64保存,我也想过只保存图片的url。
由于双引号,您将数据作为标识符(表或列名称取决于上下文)并且由于 base64 非常大,这个错误会跳转(标识符非常大),如果图像很小,它会给你错误“列名无效”例如透明 gif 的 base64:
R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
它可以用作表/列名,但在此架构中找不到。你可以尝试使用单引号
或通过参数调用过程
或者正如他们在评论中指出的那样,
QUOTED_IDENTIFIER
在 SQL 中停用如何以及在何处停用它取决于存储过程。例如,我给你留一个小提琴:http ://www.sqlfiddle.com/#!18/11d01
在 msdn 页面上有一个组合 the
ON
和 the的示例OFF
https://docs.microsoft.com/en-us/sql/t-sql/statements/set-quoted-identifier-transact-sql
我以这种方式处理上传照片:
转到此链接以安装映像
http://image.intervention.io/getting_started/installation
然后像这样实现它
在控制器中:
在视图中我放了一个enctype: