[英]How can I update 1 row of an sql table using php?
我正在制作一种数据共享系统,管理员可以在其中创建项目,向其中添加模板(例如:文本 1 最多只能有 20 个字符),然后将它们分配给用户。 然后用户可以根据自己的喜好更新项目(例如,更改默认文本)。
在下一个屏幕截图中,有一个用户如何在项目中查看的示例(西班牙语,抱歉):
事实是,当用户更新他的文本 1 时,文本 1 和文本 2 会同时更改,这甚至会影响分配给同一用户的各种其他项目。
文本更新的完成方式是这样的:
<div class="col-md-6 row">
<label for="texto_id" class="col-md-4 col-form-label">Change Text</label>
<br>
<select id="texto_id"
class="form-control @error('texto_id') is-invalid @enderror"
name="texto_id"
value="{{ old('texto_id') }}"
required autocomplete="texto_id"
autofocus>
<option value="null"> </option>
@foreach($proyecto_data as $prt_data)
@foreach($texto_data as $txt)
@foreach($texto_proyecto_data as $txt_prt)
@if($txt_prt->id_texto_data == $txt->id)
@if($txt_prt->id_proyecto_data == $prt_data->id)
<option value="{{ $txt->id }}">{{ $txt->nombre }} wich has min {{ $txt->min }} and max {{ $txt->max }}</option>
@endif
@endif
@endforeach
@endforeach
@endforeach
</select>
@error('name')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
用户选择与他们相关的文本并编写新文本,这是其屏幕截图:
之后,变量被发送到更新表的 php 脚本,为此我尝试了接下来的两行:
$sql = "UPDATE texto_datas SET texto = " . $texto_valor . "WHERE id=" . $id_texto_valor;
and
DB::update('update texto_datas set texto = ?', $texto_array ,'where id = ?', $id_texto_valor);
第一个完全什么都不做,而第二个改变与用户相关的所有文本,迅速忽略在哪里。
有什么我做错了吗?
您没有正确使用查询构建器。 你需要做:
DB::table('texto_datas')
->where('id', $id_texto_valor)
->update(['texto' => $texto_array]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.