mysql_insert_id()

时间:2012-01-25 14:44:03

标签: php

我想知道是否有人可以帮助我。

我正在尝试在PHP中实现mysql_insert_id()命令,我似乎无法让它工作。

我正在使用一个非常简单的脚本(下面)来测试它的工作原理,但我只能在'testfinds'表中创建一条记录而不是'testimages'。

<?php
    $conn = mysql_connect("hostname","username","password");
    if (!$conn) {
    die('PHP Mysql database connection could not connect : ' . mysql_error());
    }
    $findname=$_POST[findname];
    $phototitle=$_POST[phototitle];

    $db_selected = mysql_select_db("database", $conn);
    $sql = "INSERT INTO testfinds (findname)VALUES ('$findname')";
    $result = mysql_query($sql, $conn);

    $findid = mysql_insert_id($conn);

    $sql = "INSERT INTO testimages (phototitle) VALUES ('$phototitle','$findid')";
    $result = mysql_query($sql, $conn);

    //echo "Inserted record id is : " . mysql_insert_id();
    mysql_close($conn);
    ?>

我已经浏览了我找到的示例,并根据我的代码检查了这个,并且似乎没有任何区别,我已经仔细检查了表和字段名,只是为了看看我是否在那里犯了错误,但我找不到任何东西。

这是我正在使用的表单,再次测试功能非常简单。

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Map</title>        
        <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&language=en"></script>    

 <form enctype="multipart/form-data" action="savephp.php" name="save" id="savefindsandimages" method="post">
 <label>Find Name:<input type="text" name="findname" id="findname" />
  <br />
  <br />
  Photo Title:
  <input type="text" name="phototitle" id="phototitle" /> 
 <br />
  <br />
</label>
 <p>
    <input type="submit" value="Add">

我只是想知道是否有人可以看看这个并让我知道我哪里出错了?

非常感谢

2 个答案:

答案 0 :(得分:4)

看来您的第二个INSERT查询有点不正确:

INSERT INTO testimages (phototitle) VALUES ('$phototitle','$findid')

您需要为您设置的其他字段命名 - (phototitle)应为(phototitle,otherfieldname)。修复它,看看你的脚本是否按预期工作。

另外,我不知道这是不是一个错字,但你有:

$findname=$_POST[findname];
$phototitle=$_POST[phototitle];

$_POST变量应该是$_POST["findname"]$_POST["phototitle"]。最后,正如评论中所提到的,您的脚本容易受到SQL注入攻击。有关详细信息,请参阅Bobby Tables

答案 1 :(得分:3)

您缺少SQL中列的名称:

$sql = "INSERT INTO testimages (phototitle, COLUMN_NAME_HERE) VALUES ('$phototitle','$findid')";