Php mysql_insert_id();不断返回';0';
我试图在使用Php mysql_insert_id();不断返回';0';,php,mysqli,Php,Mysqli,我试图在使用mysql\u insert\u id()进行查询后获取id,但我仍然得到0,尽管事实是 我把它放在查询本身之后 我已确保id(称为P_id)具有自动增量 代码如下: $con=mysqli_connect(-connectiondetails-); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $sql="INSERT INTO c
mysql\u insert\u id()进行查询后获取id代码>,但我仍然得到0,尽管事实是
我把它放在查询本身之后
我已确保id(称为P_id)具有自动增量
代码如下:
$con=mysqli_connect(-connectiondetails-);
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql="INSERT INTO clients (Name, Email, Address, Phone, Date, Service, ExtraOne, ExtraTwo, ExtraThree, ExtraFour, ExtraFive) VALUES ('$_POST[name]','$_POST[email]','$_POST[address]','$_POST[phone]','$_POST[date]','$_POST[service]','$_POST[extra1]','$_POST[extra2]','$_POST[extra3]','$_POST[extra4]','$_POST[extra5]')";
$idit = mysql_insert_id();
echo $idit;
if (mysqli_query($con,$sql))
{
}
else
{
echo "Error message goes here: " . mysqli_error($con);
}
考虑到“哦,好吧,也许我必须首先实际查询它”,我做了以下操作,但得出了相同的结果:
$con=mysqli_connect(-connectiondetails-);
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql="INSERT INTO clients (Name, Email, Address, Phone, Date, Service, ExtraOne, ExtraTwo, ExtraThree, ExtraFour, ExtraFive) VALUES ('$_POST[name]','$_POST[email]','$_POST[address]','$_POST[phone]','$_POST[date]','$_POST[service]','$_POST[extra1]','$_POST[extra2]','$_POST[extra3]','$_POST[extra4]','$_POST[extra5]')";
if (mysqli_query($con,$sql))
{
$idit = mysql_insert_id();
echo $idit;
}
else
{
echo "Error message goes here: " . mysqli_error($con);
}
知道我哪里出错了吗?我也经历过其他的事情,但似乎什么都不适合我。提前谢谢
编辑:我已更改mysql\u insert\u id();到mysqli_insert_id();这次它甚至没有返回0,只是空白
编辑2:谢谢mbouzahir-您的解决方案成功了:)尝试使用mysqli\u insert\u id($con)
而不是第二个示例中的mysql\u insert\u id()
?您的查询易受SQL注入攻击。您应该将准备好的语句与参数绑定一起使用。试试这个(是的,我正在使用OOPAPI,因为它是一个该死的站点清理器)
试试这个
$con=mysqli_connect(-connectiondetails-);
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql="INSERT INTO clients (Name, Email, Address, Phone, Date, Service, ExtraOne, ExtraTwo, ExtraThree, ExtraFour, ExtraFive) VALUES ('$_POST[name]','$_POST[email]','$_POST[address]','$_POST[phone]','$_POST[date]','$_POST[service]','$_POST[extra1]','$_POST[extra2]','$_POST[extra3]','$_POST[extra4]','$_POST[extra5]')";
if (mysqli_query($sql,$con))
{
$idit = mysqli_insert_id();
echo $idit;
}
else
{
echo "Error message goes here: " . mysql_error($con);
}
mysqli_insert_id而不是mysql_insert_id使用mysqli_insert_id($con)不要使用echo查看$idit的值,使用var_dump($idit);这样它就不会像你描述的那样“空白”,但NULLI只是没有用。这次它甚至没有返回0-它只是空白。OP没有执行$sql语句,所以它后面放的是什么语句,或者它们是否使用msql或mysqli都无关紧要。嘿,Jeff,sql是在if语句中执行的。我已经对它进行了测试,它可以发布到另一个页面。OP使用的是MySQLi,而不是不推荐的MySQL扩展
$con=mysqli_connect(-connectiondetails-);
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql="INSERT INTO clients (Name, Email, Address, Phone, Date, Service, ExtraOne, ExtraTwo, ExtraThree, ExtraFour, ExtraFive) VALUES ('$_POST[name]','$_POST[email]','$_POST[address]','$_POST[phone]','$_POST[date]','$_POST[service]','$_POST[extra1]','$_POST[extra2]','$_POST[extra3]','$_POST[extra4]','$_POST[extra5]')";
if (mysqli_query($sql,$con))
{
$idit = mysqli_insert_id();
echo $idit;
}
else
{
echo "Error message goes here: " . mysql_error($con);
}