1

フレームワークのマルチドライバーサポートを試みています。これは基本的に、MySQL、MySQLi、または PDO(MySQL) を簡単に使用できることを意味します。

では、挿入したい値の配列があるとしましょう。

array('Manuel', 'StackOverflow');

そして、私はこのクエリを持っています..

mysql_query("INSERT INTO users(name, fav_site) VALUES(?, ?)");

では、クエスチョン マークを順番にそれらの値に置き換えたいので、Manuel が最初に行ってから StackOverflow に進みます。MySQL がエラーをスローしないように、これらの値の両側に -> ' <- を追加する必要があることを思い出してください。

誰かがこれを尋ねて運が悪かったかどうかを調べてみました.

どんな助けでも大歓迎です!

注: MySQL を気にするべきではないことはわかっていますが、ちょっと! 特徴は特徴です。

4

2 に答える 2

1
<?php
$query = "INSERT INTO users(name, fav_site) VALUES(?, ?)";
$args = array('joe', 'google goggles');
while(strpos($query, '?') !== FALSE)
{
  $query = preg_replace('/\?/', your_quoting_func(array_shift($args)), $query, 1);
}
echo $query;

基本的に、これは...まだ?文字列に残っている場合は、最初の疑問符を削除し、引用符で囲まれた (独自の関数または mysql_real_escape_string を使用して一重引用符で囲む) 文字列に置き換え、その項目を配列からシフトします。あなたはおそらくsubstr_count?マークとエラー チェックの引数の数。

置き換える値の数を指定する引数を受け入れるので、preg_replace を使用しましたが、str_replace は受け入れません。

于 2012-07-20T00:44:21.880 に答える
0

私はこのようにします(1つの例外を除いて:私は使用しませんmysql_):

<?php
$values = array('foo', 'bar');

$query_start = "INSERT INTO `users` (`name`, `fav_site`) VALUES ('";
$query_end = "')";

$query = $query_start . implode("', '", $values) . $query_end;

$result = mysql_query($query);
?>

$query_startには MySQL クエリの開始が含まれ (最後に があることに注意してください')、最後に$query_end続きます。

次に、「接着剤」として$values内破され、次のように設定されます。', '$result

$query_start(阻害$result) $query_end.

内破 - PHP マニュアルを参照してください。

于 2012-07-20T01:03:02.980 に答える