简体   繁体   中英

mysql_insert_id()

I wonder whether someone can help me please.

I'm trying to implement the mysql_insert_id() command in PHP and I just can't seem to get this to work.

I'm using a really simple script (below) just to test that it works, but I can only get a record to be created in the 'testfinds' table and not the '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);
    ?>

I've been through the example I found and checked this against my code and there doesn't seem to be any difference there and I've double checked the table and fieldnames just to see if I'd made an error there, but I can't find anything.

This is the form that I'm using, again something really simple to test the functionality.

 <!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">

I just wondered whether someone could perhaps take a look at this and let me know where I'm going wrong?

Many thanks

It appears your second INSERT query is a bit incorrect:

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

You need to name the other field that you're setting - (phototitle) should be (phototitle,otherfieldname) . Fix that and see if your script works as expected.

Also, I don't know if it's a typo, but you have:

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

The $_POST variables should probably read $_POST["findname"] and $_POST["phototitle"] . And finally, as mentioned in comments, your script is vulnerable to SQL injection attacks. See Bobby Tables for more info.

您缺少SQL中列的名称:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM