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);
    }