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