php - 如何使 MySQL 对类型严格

标签 php mysql laravel

场景如下,我们正在 Laravel 中构建一个 Web 应用程序,并分配了一个路由,如下所示:

Route::get('/sample/{client}', 'SampleController@SampleMethod')->name('SampleNaming');

SampleMethod 方法,从客户端变量中读取并在页面中显示有关客户端的数据。

如果我们转到 http://localhost/appurl/sample/1例如,它显示有关客户端 ID 1 的数据。诀窍在于,如果我们转到 http://localhost/appurl/sample/1abc , 它仍然会显示客户端 id 1 的数据。

尝试在 MySQL 中查询,

select * from clients where ID = '1abc'

ID列是一个整数,是clients表的主键。

上面的查询给了我客户端 ID 1 的结果,原来是 MySQL 检查提供的字符串并搜索其中的整数部分并相应地获取行。

当然,我们可以在 PHP/Laravel 中避免这种情况,但我的问题是,有没有办法让 MySQL 在这种情况下变得严格?

最佳答案

纯 Laravel 解决方案是使用 Regular Expression Constraints .

Route::get('/sample/{client}', 'SampleController@SampleMethod')
    ->name('SampleNaming')
    ->where(['client' => '[0-9]+']);

关于php - 如何使 MySQL 对类型严格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49259882/

相关文章:

mysql - 根据输入的总点数返回随机行

php - Laravel (ORM) 中基于表关系使用额外标志字段获取数据

mysql - 如何在mysql中临时锁定数据库

php - Laravel 中的碳意外日期时间格式

php - 如何在同一 mySQL 数据库中的表之间链接数据?

php - 如何在 PHPMyAdmin 中启用关系?

mysql - 需要架构帮助 - MySQL 或 NoSQL 用于包含 5400 万条记录的表

php - Laravel:设置自定义主键值的方法

javascript - 如何在 laravel blade 中使用 vue.js 组件?

javascript - 如何将变量和数据从PHP传递到JavaScript?