0
我有一個PHP腳本,從一個窗體記錄輸入到MySQL數據庫表。我正在尋找一種方法來插入這些數據,直到3行被創建,之後它必須更新現有的行,以便第一個更新到新的輸入,第二個更新到前一個輸入,第三個更新到前者的第二個輸入。MySQL插入和更新表,最大3
表:
CREATE TABLE IF NOT EXISTS inputlog (
id int(11) NOT NULL auto_increment,
userid int(11) NOT NULL default '0',
name text,
value text,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;`
前三行我使用:
insert into inputlog (userid,name,value) values('$userid','$name','$value')
之後即有可能成爲:
update inputlog set value = '$value' where userid = '$userid' and name = '$name'
它必須更新所有的連續行。
我該如何做到這一點?
**警告**:這有一些嚴重的[SQL注入漏洞](http://bobby-tables.com/),因爲用戶數據在查詢中使用。儘可能使用**準備好的陳述**。這些在['mysqli'](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和[PDO](http://php.net/manual/)中很簡單en/pdo.prepared-statements.php)其中任何用戶提供的數據都是用'?'或':name'指示符指定的,後者使用'bind_param'或'execute'填充,具體取決於您使用的是哪一個。 **絕不**將'$ _POST','$ _GET'或任何用戶數據直接放入您的查詢中。 – tadman
不要使用單引號''''作爲變量,而是使用雙引號來代替'「」',除非你使用像'$ query =「INSERT ....」這樣的主要查詢「;那麼單引號就可以。 – AXAI
你也應該儘可能避免使用脆弱的,過時的MyISAM引擎。 InnoDB應該是你的默認設置。同樣,如果這很實用,則使用'utf8'或'utf8mb4'進行編碼,因爲'latin1'的限制性很強。 – tadman