0

次のコードは、画面に「12」を表示します。それだけです。これらのエコー番号はデバッグ用に追加されました。

「123」を表示し、ステートメント内の変数を MySQL データベースに挿入する必要があります。何らかの理由で、prepare ステートメントで終了します。fail() エラー チェックが呼び出されません。実際には、prepare ステートメントの後には何も呼び出されません。

私はサイトのいたるところにいて、必要なことはすべて適切に行っていると信じていますが、それは私が行ったことである可能性が高い.

準備ステートメントがこのように失敗する理由を誰か教えてもらえますか?

$query = "insert into member(mail, user, val) values (?, ?, ?)";
$uuu = blah@blah.com;
$hhh = Blah Williams;
$val = 0;
echo "1";
if($stmt = $this->conn)
{
    echo "2";
    $stmt->prepare($query) || $this->fail('MySQL prepare', $stmt->error);
    echo "3";
    $stmt->bind_param('ssi', $uuu, $hhh, $val)
        || $this->fail('MySQL bind_param', $stmt->error);
    $stmt->execute();
    if (!$stmt->execute()) 
    {
        if ($stmt->errno === 1062 /* ER_DUP_ENTRY */)
        {
            $this->fail('This username is already taken');
        }
        else
        {
            $this->fail('MySQL execute', $stmt->error);
        }
    }
}
else 
{/*error check*/
    $this->fail('MySQL insert prepare failed', $stmt->error);
    return 0;
}
$stmt->close();
return true;
4

1 に答える 1

1

割り当ては常に true になるため、使用する必要があります。

$stmt = $this->conn->prepare($query);

失敗した理由を確認するには、次を使用します。

var_dump($stmt->errorInfo());
于 2013-06-12T23:47:04.707 に答える