这是我在cakephp控制器中的函数编辑:
public function edit($id = null) {
if ($this->request->is('get')) {
$this->request->data = $this->Topic->findById($id);
}
...
第一个问题是传递给函数的参数id是string类型而不是整数。 其次,在数据库中有一个id = 14的主题,这两个代码都检索到相同的结果,我不明白为什么:
http://localhost/cakephp1/topics/edit/14
http://localhost/cakephp1/topics/edit/14anyCharactersHere
答案 0 :(得分:0)
URL传递的参数当然是类型字符串,因为URL是一个字符串。
假设数据库中的id
列是整数,Cake会将传递给findById()
的参数转换为整数:(int)"14"
和(int)"14anyCharactersHere"
都会导致{{1} }。因此,您问题中的两个网址都会导致从数据库中提取相同的数据。
如果您想确保14
仅包含整数使用ctype_digit()
: -
$id