【问题标题】:PHP Get ID of Last Inserted RecordPHP获取最后插入记录的ID
【发布时间】:2016-08-03 20:55:19
【问题描述】:

我知道这个问题已经回答了很多次,但似乎无法让它在我现有的代码中工作。原谅我是个笨蛋。我的问题:我只需要在创建新记录时获取索引和自动递增的 client_id 值,这样我就可以通过电子邮件将其连同他们的密码一起发送给新用户,这样他们就可以登录到他们的帐户。这是我的代码,感谢您的帮助。我也明白我应该从 MySQL 转换为 mysqli:

$conn = mysql_connect($servername, $username, $password, $dbname);

if (!$conn) { die('Could not connect: ' . mysql_error()); }

mysql_select_db($dbname,$conn);

$sql="INSERT INTO ricks_inserts (companyname, contact, email)

VALUES ('$_POST[companyname]','$_POST[contact],'$_POST[email]')";

$id = mysql_insert_id(); "My actual variable in my table is called client_id"

if (!mysql_query($sql,$conn))
{
die('Error: ' . mysql_error());
}echo "<br />";

$message= <<<EOD
Client Id:$_POST[client_id]
Email: $_POST[email]
Company: $_POST[companyname]
Contact: $_POST[contact]
EOD;

【问题讨论】:

  • 在您执行插入查询之后 才能获得插入ID。有点道理,不是吗?
  • 您可以使用此代码进行 SQL 注入。
  • 我们真的还能谈论注射吗?
  • 看看我的意思,我没有意义大声笑,这就是我寻求帮助的原因。我只是学习所以请原谅。我什至不知道注射是什么,但我想我最好学习
  • 警告:如果您只是学习 PHP,请不要使用mysql_query 接口。它是如此可怕和危险,以至于它在 PHP 7 中被删除。像 PDO is not hard to learn 这样的替代品和像 PHP The Right Way 这样的指南解释了最佳实践。你的用户参数不是properly escaped,有SQL injection bugs可以被利用。

标签: php mysql mysqli


【解决方案1】:

也许你可以试试这个 MySQL版本

$conn = mysql_connect($servername, $username, $password, $dbname);

if (!$conn) { die('Could not connect: ' . mysql_error()); }

mysql_select_db($dbname,$conn);

$companyname = mysql_real_escape_string($_POST['companyname']);
$contact = mysql_real_escape_string($_POST['contact']);
$email = mysql_real_escape_string($_POST['email']);

$sql="INSERT INTO ricks_inserts (companyname, contact, email)

VALUES ('".$companyname."','".$contact."','".$email."' ) " or die(mysql_errno());

if (mysql_query($sql)) {
    $last_id = mysql_insert_id();
    echo "New record created successfully. Last inserted ID is: " . $last_id;
} else {
    echo "Error: " . $sql . "<br>" . mysql_error();
}

$message= <<<EOD
Client Id:$_POST[client_id]
Email: $_POST[email]
Company: $_POST[companyname]
Contact: $_POST[contact]
EOD;

MySQLi 版本

        <?php
$conn = mysqli_connect($servername, $username, $password, $dbname);

if (!$conn) { die('Could not connect: ' . mysqli_error($conn)); }

mysqli_select_db($conn,$dbname);

$companyname = mysqli_real_escape_string ($conn,$_POST['companyname']);
$contact = mysqli_real_escape_string ($conn,$_POST['contact']);
$email = mysqli_real_escape_string ($conn,$_POST['email']);

$sql="INSERT INTO ricks_inserts (companyname, contact, email)

VALUES ('".$companyname."','".$contact."','".$email."' ) " or die(mysqli_errno($conn));

if (mysqli_query($conn,$sql)) {
    $last_id = mysqli_insert_id($conn);
    echo "New record created successfully. Last inserted ID is: " . $last_id;
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

$message= <<<EOD
Client Id:$_POST[client_id]
Email: $_POST[email]
Company: $_POST[companyname]
Contact: $_POST[contact]
EOD;

?>

【讨论】:

猜你喜欢
  • 2018-11-06
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
相关资源
最近更新 更多