0

晚上好..我正在发布一个表单,其中包含数据库中列的编号(而不是名称),所以我想更新列名称所指的字段,
这是我的代码:

$hours=$_POST['hour'];
$date=$_POST['date'];
$s=$_POST['subject'];
$res=mysql_query("UPDATE study SET [$s] ='$hours' WHERE day='$date' ");

其中 $s 是一个整数,等于所需列的数量。但它不起作用。那么有没有办法通过它的编号而不是它的名称来引用一列?

4

2 回答 2

0

将带有唯一行号的自动增量列添加到现有表中

 ALTER TABLE mytable ADD idnum INT NOT NULL AUTO_INCREMENT;

(或在新表中添加字段

CREATE TABLE mytable (
  idnum INT NOT NULL AUTO_INCREMENT,
 ... )

并将idnum设置为PRIMARY KEY.

这样所有行都有一个由 MySQL 自动创建的唯一编号。要插入一行,请将字段设置为null,MySQL 会自动设置数字

INSERT INTO mytable (idnum, ...) VALUES (null, ...);

请注意,您可以检索 MySQL 自动设置的idnum,这要归功于 PHP API,例如mysqli请参阅此页面),

$lastid = $mysqli->insert_id(); // $mysqli being the mysqli object

然后要更新一个值,你必须存储在某个地方(最好在会话中而不是在页面上[因为在这种情况下用户可以修改它 - 除非没关系])

// Modify field form
...SELECT idnum,nhours FROM mytable WHERE thedate = ...
$_SESSION['idnum'] = $row['idnum'];
...
// Display form ...

// Form processing
// Check first if SESSION has an idnum (an other parameters) in case the user hacked the page and submit a "special" form ...
/// Then
$res=mysql_query("UPDATE study SET nhours='$hours' WHERE idnum=" . $_SESSION['idnum']);
于 2013-05-12T03:53:22.603 回答
0

根据This question,您似乎只能通过使用information_schema表格来做到这一点。

于 2013-05-12T01:41:07.677 回答