$data = I('post.');
$result = $this->validate($data, 'Users.insert'); // 控制器进行数据验证
if($result == false){
// 验证失败 输出错误信息
dump($result); die();
}
上面的代码是 控制器中的, 在控制器中进行 验证数据操作<?php
namespace app\admin\validate;
use think\Validate;
class User extends Validate
{
// 验证规则
protected $rule = [
['level', 'require|number'],
['inv_code', 'require|unique'],
];
// 错误信息
protected $message = [
'level.require' => '会员级别必须填写',
'level.number' => '会员级别必须是数字',
'inv_code.unique' => '邀请码无效啊',
];
// 验证场景
protected $scene = [
'insert' => [
'level' =>'require|number',
'inv_code' =>'require|unique',
],
];
}
上面的 代码是 validata文件夹中的代码 , 将文件命名为User.php然后 运行时 报错了 , 提示如下 :
[42S02] PDOException in Mysql.php line 65
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'tpshop2.0.tp_' doesn't exist
if (false === strpos($tableName, '`')) {
if (strpos($tableName, '.')) {
$tableName = str_replace('.', '`.`', $tableName);
}
$tableName = '`' . $tableName . '`';
}
$sql = 'SHOW COLUMNS FROM ' . $tableName;
// 调试开始
$this->debug(true);
$pdo = $this->linkID->query($sql);
// 调试结束
$this->debug(false, $sql);
$result = $pdo->fetchAll(PDO::FETCH_ASSOC);
$info = [];
if ($result) {
foreach ($result as $key => $val) {
$val = array_change_key_case($val);
$info[$val['field']] = [
'name' => $val['field'],
用户表 名叫 tp_users , 但是报错信息显示 表名 出现了问题 ? 我没有找到原因呢?错误原因
// 验证规则
protected $rule = [
['level', 'require|number'],
['inv_code', 'require|unique:users'], // unique 后面添加数据表名称
];
// 验证场景
protected $scene = [
'insert' => [
'level' =>'require|number',
'inv_code' =>'require|unique:users',// unique 后面添加数据表名称;因为要查询数据库
],
];
最佳答案
