自动抓取ID功能?

时间:2014-05-19 20:41:26

标签: php mysql

好吧,所以我有两张桌子,我正在使用。

首先设置类似这些表的内容

Destination

IDDestination    Name        IDCity  IDState
1              Scottsdale     3        4
2                Miami        5        7

Destinations_Citites

IDDestinationCity    IDDestination    IDCity
1                      1               3
2                      2               5

现在,通过我的插件,我添加了一个新的目标按钮,添加了一个新目标,其中NameIDCityIDState由用户填写,{{1} }是自动生成的。

所以我想弄清楚如何做到就是抓住自动生成的IDDestination#并将其输入IDDestination表而不让用户做任何其他事情。

基本上我如何插入刚刚创建的自动生成的Destinations_Cities并将其扔到我的另一个表中,而无需用户自己添加它。

以下是我用于添加目标按钮

的插入和更新的代码
IDDEstination

1 个答案:

答案 0 :(得分:2)

您可以获得会话期间生成的最新自动增量ID:

$dest_id = mysql_insert_id();

请参阅文档:http://php.net/manual/en/function.mysql-insert-id.php


不完全是关于你的问题,但我回应上面的评论,你应该保护你的查询免受SQL注入漏洞。除非确保变量安全,否则不要将PHP变量复制到SQL字符串中。

  • 如果变量应该是一个整数,请在阅读时使用(int)将其强制转换为整数。
  • 对于字符串值,请使用MySQL API提供的转义。

此外,如果您只是将简单变量放在PHP字符串中,则无需执行所有.连接。 SQL中没有必要在整数文字周围加上引号。

以下是一个例子:

if(isset($_POST['Add_Destination'])) {
    $idstate = (int) $_POST['idstate1'];
    $idcity = (int) $_POST['idcity'];
    $name = mysql_real_escape_string($_POST['addname']);
    $SQL="INSERT INTO destination (name, IDCity, IDState) 
        VALUES ('$name', $idcity, $idstate)";
    $dest_id = mysql_insert_id();
    $SQL1="UPDATE city SET is_active='1' WHERE IDCity='$idcity'";
    . . .

如果将代码转换为使用PDO,则可以使用SQL查询参数,在这种情况下,您无需担心转义等问题。