我想知道是否有人可以帮助我。
我正在尝试在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">
我只是想知道是否有人可以看看这个并让我知道我哪里出错了?
非常感谢
答案 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')";