0

私のスクリプトで次のコードブロックを実行するとエラーが発生する理由を誰かが教えてくれますか?

スクリプトで実行されている mysql 接続があります。

// Generate a random key and add details to specials table
$email = $_POST['specials'];
$randomKey = substr(str_shuffle(str_repeat('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',12)),12);
$sql = "
    INSERT INTO specials SET
    id='',
    email='$email',
    verified='0',
    `key`='$randomKey',
    timestamp=NOW()
";
if (!mysqli_query($link, $sql))
{
    $error = 'Error adding email address to specials table.';
    include "$docRoot/html/main/error.html.php";
    exit();
}

私はこれを正しくコーディングしたと確信しており、試行錯誤のテストセッションを行う前に、これを簡単に見て、私が見逃した可能性のある明らかなエラーを見つけたかどうかを教えてくれると思いました.

時間を割いて読んでいただきありがとうございます。

編集:

次のコードで:

if (!mysqli_query($link, $sql12))
{
    echo mysqli_error();
    $error = 'Error adding email address to specials table.';
    include "$docRoot/html/main/error.html.php";
    exit();
}

次の出力が得られます。

Warning: mysqli_error() expects exactly 1 parameter, 0 given in /serveraddress/includes/inc/assistors/controllers.inc.php on line 161

4

2 に答える 2

0

いずれかのフィールドが数値であるかどうかを確認していただけますか? それぞれに文字データを送信しているため、SQL が失敗する可能性があります。

ID は INT であると述べたので、以下の変更されたコードを使用してください。

// Generate a random key and add details to specials table
$email = $_POST['specials'];
$randomKey = substr(str_shuffle(str_repeat('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',12)),12);
$sql = "
    INSERT INTO specials SET
    id=0,
    email='$email',
    verified=0,
    `key`='$randomKey',
    timestamp=NOW()
";
if (!mysqli_query($link, $sql))
{
    $error = 'Error adding email address to specials table.';
    include "$docRoot/html/main/error.html.php";
    exit();
}

''は空白文字列を意味し、MySQL は空白文字列をそこから INT 型の数値に正常に変換できないため、SQL INSERT コマンドに失敗していました。そのため、いずれかを送信する必要があります。0または、ID 列で許可されているNULL場合は、 を送信することもできますNULL。ただし、送信''するとエラーが発生します。

ここで注意すべき点は、検証済みに送信された は正常に変換される'0'ためエラーをトリガーしないため、MySQL には問題がないことです。'0'0

''ID 列に空白の文字列を保存しようとしたため、エラーが発生していました。

于 2012-05-18T13:19:38.883 に答える
0

これを試して、正確に何が返されるかを確認してください

$result = mysqli_query($link, $sql);
var_dump($result);
于 2012-05-18T13:05:16.990 に答える