0

廃止されたことは理解しmysql_ていますが、本から学ぶためのツールとして使用しているだけです。

プレースホルダーについて学習しようとしていますが、[レコードの追加] をクリックすると次のエラーが表示されました。

INSERT failed: EXECUTE statement USING @first,@last,@email,@user 
Unknown prepared statement handler (statement) given to EXECUTE

次のコードを使用します。

if (isset($_POST['first']) && isset($_POST['last']) && isset($_POST['user_name']) && isset($_POST['email']))
{
    $first      = get_post('first');
    $last       = get_post('last');
    $email      = get_post('email');
    $user_name      = get_post('user_name');

    // begin placeholde code
    $query = 'PREPARE statement FROM "INSERT INTO user_master VALUES(?,?,?,?)"';
    mysql_query($query);

    $query = 'SET @first = "$first",' . 'SET @last = "$last",' . 'SET @email = "$email",' . 'SET @user_name = "$user_name",';
    mysql_query($query);

    $query = 'EXECUTE statement USING @first,@last,@email,@user';
    mysql_query;

    // end placeholder code

    if(!mysql_query($query, $db_server)) echo "INSERT failed: $query <br />" . mysql_error() . "<br /><br />";
}


echo <<<END
<form action = "willingLog.html" method="post"><fieldset><legend>Sign Up:</legend>    <pre>
    First       <input type="text" name="first" />
    Last        <input type="text" name="last" />
    Email       <input type="text" name="email" />
    Username    <input type="text" name="user_name" />
                <input type="submit" value="AD RECORD" />
</pre></fieldset></form>
END;

// also from placeholder code
$query = 'DEALLOCATE PREPARE statement';
mysql_query($query);
// end placeholder code
4

3 に答える 3

1

最初のPREPARE statementクエリが失敗している可能性があるため、次の行も変更する必要があります。

$query = 'SET @first = "$first",' . 'SET @last = "$last",' . 'SET @email = "$email",' . 'SET @user_name = "$user_name",';

$query = 'SET @first = "$first",' . ' @last = "$last",' . ' @email = "$email",' . ' @user_name = "$user_name",';

の構文SETはですSET variable_assignment [, variable_assignment] ...が、これを使用SET variable_assignment [, SET variable_assignment] ...するとエラーが発生します。

最初のクエリにエラーがあるかどうかを確認するには、次のことを試してください。

$query = 'PREPARE statement FROM "INSERT INTO user_master VALUES(?,?,?,?)"';
$res = mysql_query($query);
if (!$res) die(mysql_error());
于 2012-06-26T20:48:56.620 に答える
0

単純なタイプミスがあると思います

$query = 'EXECUTE statement USING @first,@last,@email,@user';

mysql_query;

クエリを mysql_query 関数に渡すのを忘れたので、次のように変更します

$query = 'EXECUTE statement USING @first,@last,@email,@user';
mysql_query($query);

それがうまくいくことを願っています

于 2015-08-02T10:26:27.750 に答える