如何根据另一列的值在列中指定默认值?

时间:2014-07-01 03:42:29

标签: php mysql sql default-value

我希望我的数据库中的列具有默认值,该值对于每一行都是相同的,但是最后一个字符应该是该行的主键。

这可以使用PHP / MySQL实现吗?

例如(我希望链接列具有默认值)

+----+----------------------------+
| ID |            Link            |
+----+----------------------------+
|  1 | edit_item.php?id=1         |
|  2 | edit_item.php?id=2         |
|  3 | edit_item.php?id=3         |
+----+----------------------------+

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

在插入时,您需要插入并更新您的记录。

首先插入你的记录,然后获取最后插入的id,然后更新记录,例如:

<?php 

$sql = "INSERT INTO TableName(Link) VALUES ('edit_item.php')";

if (!mysqli_query($con,$sql)) { 
    die('Error: ' . mysqli_error($con));
} else {
    $id = mysql_insert_id();

    mysqli_query($con,"UPDATE TableName SET Link='edit_item.php?id=".$id."' WHERE id=$id); 
}

答案 1 :(得分:-1)

您无法动态设置默认设置,但绝对可以使用 printf()进行某种替换,例如:

架构:

CREATE TABLE links (
    id   INT  PRIMARY KEY AUTO_INCREMENT,
    link TEXT DEFAULT "edit_item.php?id=%d"
);

然后在PHP中,使用 printf()替换%d和ID,

<?php

// Let's assume it's an array with this format:
// ['id' => 1, 'link' => 'edit_item.php?id=%d']
$row = yourSelectCommandThatReturnsAnObject();

// In this case, $row['id'] will replace the %d.
$link = printf($row['link'], $row['id']);

您可以查看the PHP docs for printf()了解更多信息。