-1

を使用してクエリの後に ID を取得しようとしていますmysql_insert_id();が、それでも 0 を取得しています。

  1. クエリ自体の後に配置し、
  2. ID (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);
}

私がどこで間違ったのか分かりますか?他のスレッドを調べましたが、何も機能していないようです。ありがとうございます。

編集: mysql_insert_id(); を変更しました。mysqli_insert_id() へ; 今回は 0 すら返さず、ただ空白でした。

EDIT 2:ありがとうmbouzahir - あなたの解決策はうまくいきました:)

4

3 に答える 3

4

mysqli_insert_id($con)2 番目の例の代わりに使用してみmysql_insert_id()ましたか?

于 2013-08-28T03:01:51.210 に答える
0

クエリは SQL インジェクションに対して脆弱です。パラメータバインディングで準備済みステートメントを使用する必要があります。これを試してみてください(そして、はい、私はOOP APIを使用しています.OOP 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;
于 2013-08-28T03:24:45.993 に答える
-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);
}
于 2013-08-28T03:27:43.790 に答える