【发布时间】:2011-06-09 17:14:20
【问题描述】:
请原谅我对这个问题的无知,但似乎是一个明显的解决方案对我来说并没有在一起..
我的验证工作正常,除了当我在表单字段中输入任何字母字符时,我得到一个 sql 错误:
SQL Error: 1054: Unknown column 'abcde' in 'where clause'...
如您所见,我输入了“abcd”作为测试..
但是,如果我输入一个数字字符并且根据我的验证一切都很好.. 似乎 alpha 值被读取为列名??
这是我的验证规则:
...'Age' => array(
array(
'rule' => array('maxLength', 3),
array(
'rule' => 'numeric',
'allowEmpty' => true,
'message' => 'Age must be numeric.'
),
),
这是我的控制器验证码:
if ($this->RequestHandler->isAjax()) {
if ($this->Plan->validates()) {
$this->Plan->set($this->data);
$errors = $this->Plan->invalidFields();
$this->set('errors', $errors);
} else {
$this->Plan->set($this->data);
}
}
如您所见,我将错误返回到我的视图中,并且正确的错误“年龄必须是数字”。实际上确实按预期显示,但只是带有 SQL 错误内容。
感谢您提供有关为什么会发生这种情况的任何见解。
【问题讨论】:
-
当
validates()返回真时,您设置$errors。你确定这就是你想要的吗? -
有没有可能你只是漏掉了一个括号?
-
没有遗漏的括号我可以看到。
-
验证工作非常好,除了在字段中输入字母字符 - 只是出于某种原因搞砸了 SQL...
-
你必须命名规则吗?例如'年龄' => 数组('ruleName' => array(), 'ruleName2' => array() )。我不能确定,但无论哪种方式,您的验证规则在我看来都嵌套得很奇怪。
标签: php arrays validation cakephp