Ben tamamen stumped. İşte benim php (CodeIgniter) kodu:
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'));
}
Bu kodun amacı, 'ürün' tablosundaki bir satırın özellikleri (adı, fiyatı, döviz, url) (priary anahtar pid
) değiştirmek için. Ancak, bu işlev çalışmasına izin nedense, bir kez bakılmaksızın pid ve sorgunun sonuna tacked LİMİT 1 şey, adı, fiyatı, döviz ve tablodaki tüm kayıtların url değiştirir. Sorgunun son satırı tamamen göz ardı ediliyor sanki.
: Bu yeterince garip değilmiş gibi, ben bir "echo
" SQL sorgu olmak koşmak görmek, ve ben beklediğiniz çok gibi bir sorgu çıkışlarına "$query = $this->db->query(
" yerine
UPDATE items
SET name = 'newname',
price = 'newprice',
currency = 'newcurrency',
url = 'newurl'
WHERE pid = '10'
LIMIT 1
MySQL pencerenin içine kopyala-yapıştırma bu ben tam istediğiniz gibi davranır: Bu seçili pid ile satır değiştirir.
Burada neler oluyor??