2013-08-28 3 views
-1

Я пытаюсь захватить идентификатор после запроса с использованием mysql_insert_id();, но я все еще получаю 0, несмотря на то, чтоmysql_insert_id(); постоянно возвращается «0»

  1. Я поместил ее после самого запроса и
  2. Я убедился, что идентификатор (называемый P_Id) имеет AUTO_INCREMENT.

код ниже:

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

Любая идея, где я пошла не так? Я прошел через другие темы, но ничего не работает для меня. Заранее спасибо.

EDIT: Я изменил mysql_insert_id(); to mysqli_insert_id(); и на этот раз он даже не вернул 0, просто пустое.

EDIT 2: Спасибо mbouzahir - ваше решение работало :)

+1

mysqli_insert_id вместо mysql_insert_id – DavidLin

+1

использования mysqli_insert_id ($ CON) – mbouzahir

+0

Дон» t использовать эхо, чтобы увидеть значение $ idit, используйте var_dump ($ idit); таким образом, он не будет «пустым», как вы описали, но NULL –

ответ

4

Пробовал с помощью mysqli_insert_id($con) вместо mysql_insert_id() в вашем втором примере?

+0

Я просто сделал это безрезультатно. На этот раз он даже не вернулся 0 - он просто пуст. –

+0

OP не выполняет оператор $ sql, поэтому не имеет значения, какие операторы будут размещены после него или если они используют msql или mysqli. – jeff

+0

Привет, Джефф, sql выполняется в выражении if. Я протестировал его, и он отправляется на другую страницу. –

0

Ваш запрос уязвим для SQL-инъекции. Вы должны использовать подготовленные инструкции с привязкой параметров. Попробуйте это (и да, я использую ООП API, потому что это чертовски уборщик сайт)

$con = new mysqli(-connectiondetails-); 
if ($con->connect_errno) { 
    throw new Exception($con->connect_error, $con->connect_errno); 
} 

$stmt = $con->prepare(
    'INSERT INTO clients (Name, Email, Address, Phone, Date, Service, ExtraOne, ExtraTwo, ExtraThree, ExtraFour, ExtraFive) 
    VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'); 

if ($stmt === false) { 
    throw new Exception($con->error); 
} 

// you should probably check here that all required POST params are present 

$stmt->bindParam('sssssssssss', 
    $_POST['name'], 
    $_POST['email'], 
    $_POST['address'], 
    $_POST['phone'], 
    $_POST['date'], 
    $_POST['service'], 
    $_POST['extra1'], 
    $_POST['extra2'], 
    $_POST['extra3'], 
    $_POST['extra4'], 
    $_POST['extra5']); 

if (!$stmt->execute()) { 
    throw new Exception($stmt->error); 
} 

echo $con->insert_id; 
-1

Попробуйте один

$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); 
} 
+0

OP использует * MySQLi *, а не устаревшее расширение MySQL – Phil

Смежные вопросы