我完全难住了。这里是我的PHP(笨)代码:mysql查询没有从应用程序内部正确运行
function mod()
{
$uid = $this->session->userdata('uid');
$pid = $this->input->post('pid');
if ($this->_verify($uid,$pid))
{
$name = $this->input->post('name');
$price = $this->input->post('price');
$curr = $this->input->post('curr');
$url = $this->input->post('url');
$query = $this->db->query("UPDATE items SET
name=".$this->db->escape($name).",
price=".$this->db->escape($price).",
currency=".$this->db->escape($curr),",
url=".$this->db->escape($url)."
WHERE pid=".$this->db->escape($pid)." LIMIT 1");
}
header('location: '.$this->session->userdata('current'));
}
这段代码的目的是修改在“项目”表中的一行的属性(名称,价格,币种,URL)(priary关键是pid
) 。但是,由于某种原因,允许此函数运行一次后,将修改表中所有条目的名称,价格,货币和网址,而不管它们的pid和我在查询结尾处添加的LIMIT 1事物。就好像查询的最后一行被完全忽略。
仿佛这不是很奇怪,我换成“$query = $this->db->query(
”与“echo
”看到SQL查询正在运行,并且它多输出的查询像我期望:
UPDATE items
SET name = 'newname',
price = 'newprice',
currency = 'newcurrency',
url = 'newurl'
WHERE pid = '10'
LIMIT 1
复制 - 将其存入MySQL窗口的行为与我想要的完全一样:它使用选定的pid修改该行。
这是怎么回事?
我投入了限制1,看看它是否会有所作为。它继续修改所有行,尽管它让我更困惑。 ( – Mala 2010-03-27 23:27:12