0

ここには同じ質問がいくつかありますが、解決策を作成したと思うので、自分の質問を投稿したいのですが、うまくいきません。次のコードは次のとおりです。

$i=1;
while ( $i<= 10) 
{
    $i++;
    $sql    =   "INSERT INTO job (Category, Title, Type) VALUES ('$_POST[cat]','$_POST[title]','$_POST[type]')";
}

10個のデータを1つずつ挿入するべきではありませんか? ただし、1つのデータを挿入するだけです。なぜこうなった?

4

8 に答える 8

3

このコードには何も挿入せず、値を文字列に割り当てます$sql(そして 10 回上書きします)。while ループのにクエリを実行すると思います。

于 2013-01-22T09:28:13.583 に答える
2

おそらくmysqli_query($conn, $query)一度しか呼び出していないので、ループの中に入れてください。

于 2013-01-22T09:28:35.247 に答える
2

これは、複数の結果を挿入する方法です

$sql = "INSERT  INTO job(category,title,type) VALUES";
for($i=0;$i<sizeof($category);$i++)
{
   if($i= sizeof($category) - 1)
    $sql. = "(".$category[$i].",".$title[$i].",".$type[$i].");"; 
   else
    $sql. = "(".$category[$i].",".$title[$i].",".$type[$i]."),"; 
}
 $mysqli->query($sql);

単一$category,$title,$typeのクエリに挿入する配列と見なします。

于 2013-01-22T09:31:29.360 に答える
1

繰り返しごとにまったく同じ SQL 文字列を作成していることを確認してください。
コードは次のようになります。

 $i=1;
 while ( $i<= 10)
 {
    $i++;
    $sql = "INSERT INTO job (Category, Title, Type)
                 VALUES ('{$_POST[cat]}','{$_POST[title]}','{$_POST[type]}')";
    mysql_query($sql);
 }



に注意してください[]

于 2013-01-22T09:33:46.053 に答える
1
$mysqli = new MySQLi("host","user","pass","db_name");

for($i = 0; $i < 10; $i++)
{
  $sql = "INSERT INTO job (Category, Title, Type)
          VALUES ('" . $mysqli->real_escape_string($_POST['cat']) . "','" . $mysqli->real_escape_string($_POST['title']) . "','" . $mysqli->real_escape_string($_POST['type']) . "')";
  $mysqli->query($sql);
}
于 2013-01-22T09:30:54.660 に答える
1
$i=1;
$addCount=0;
while ( $i<= 10) 
{
    $i++;
    $sql    =   "INSERT INTO job (Category, Title, Type) VALUES ('$_POST[cat]','$_POST[title]','$_POST[type]')";
    if(mysql_query($sql)){
        $addCount++;
    }
}

echo "Total number of records added: ".$addCount;
于 2013-01-22T09:31:14.730 に答える
1

このようにできます。10個のクエリを実行する代わりに、単一のクエリで実行できます

$i=1;

while ( $i<= 10) 
{
    $i++;
    $values[]       =   "('$_POST[cat]','$_POST[title]','$_POST[type]')";
}
$new_values =   implode(',',$values);
$sql    =   "INSERT INTO job (Category, Title, Type) VALUES $new_values";

これで、mysqli_query を使用して実行できます。

于 2013-01-22T09:31:46.893 に答える
1

次のようなことができます...

 $i=1;
 while ( $i<= 10) {
   mysql_query("INSERT INTO job (Category, Title, Type) VALUES('".$_POST[cat]."','".$_POST[title]."','".$_POST[type]."')");
   $i++;
}
于 2013-01-22T10:43:12.817 に答える