web-dev-qa-db-ja.com

テーブルへのデータの挿入(mysqli insert)

私はこのコードをしばらく見てきましたが、どこに問題があるのか​​わかりません。 StackOverflow全体を読んでいますが、エラーがどこにあるのかまだわかりません。

<?php

mysqli_connect("localhost","root","","web_table");
mysql_select_db("web_table") or die(mysql_error());

if (mysqli_connect_errno()) {

  echo "Failed to connect to MySQL: " . mysqli_connect_error();

}
echo "<p> Connection Successful!"

mysqli_query('INSERT INTO web_formitem (ID, formID, caption, key, sortorder, type, enabled, mandatory, data) VALUES (105, 7, Tip izdelka (6), producttype_6, 42, 5, 1, 0, 0)');


echo "<p>Insert successfull";

?>

エラーは13行目のどこかにあります、thats mysqli_query('insert...http://www.w3schools.com/php/php_mysql_insert.asp で自分自身を助けようとしましたが、それはあまり役に立ちません。

12
Blue

警告:学習目的でw3schoolsを決して参照しないでください。チュートリアルには多くの間違いがあります。

mysqli_query ドキュメントによると、最初のパラメーターは接続文字列でなければなりません:

$link = mysqli_connect("localhost","root","","web_table");

mysqli_query($link,"INSERT INTO web_formitem (`ID`, `formID`, `caption`, `key`, `sortorder`, `type`, `enabled`, `mandatory`, `data`)
VALUES (105, 7, 'Tip izdelka (6)', 'producttype_6', 42, 5, 1, 0, 0)") 
or die(mysqli_error($link));

注:一部の列名は予約語であるため、挿入クエリの列名にバッククォート `を追加します。

26
Rikesh

Mysqli_query(最初のパラメーターは接続、SQLステートメントでなければなりません)で

$connetion_name=mysqli_connect("localhost","root","","web_table") or die(mysqli_error());
mysqli_query($connection_name,'INSERT INTO web_formitem (ID, formID, caption, key, sortorder, type, enabled, mandatory, data) VALUES (105, 7, Tip izdelka (6), producttype_6, 42, 5, 1, 0, 0)');

しかし、ベストプラクティスは

$connetion_name=mysqli_connect("localhost","root","","web_table") or die(mysqli_error());
$sql_statement="INSERT INTO web_formitem (ID, formID, caption, key, sortorder, type, enabled, mandatory, data) VALUES (105, 7, Tip izdelka (6), producttype_6, 42, 5, 1, 0, 0)";
mysqli_query($connection_name,$sql_statement);

もちろん、質問には回答しましたが、コードの3行目に気付く人はいないようです。それは絶えず私を悩ませました。

    <?php
    mysqli_connect("localhost","root","","web_table");
    mysql_select_db("web_table") or die(mysql_error());

何らかの理由で、サーバーへのmysqli接続を確立しましたが、データベースへのmysql接続を確立しようとしています。

       $link = mysqli_connect("localhost","root","","web_table");
       mysqli_select_db ($link , "web_table" ) or die.....

または私が始めた場所

     <?php $connection = mysqli_connect("localhost","root","","web_table");       
      global $connection; // global connection to databases - kill it once you're done

または、上記のような他の引数として$ connectionパラメータを使用してクエリします。その3行目を取り除きます。

Php mysqli関数を使用している間、接続の詳細が最初に言及され、クエリが関数に渡されることに注意してください

$cid=mysqli_connect("server", "username", "password", "database_name") or die (mysql_error());
mysqli_query($cid, $query) or die (mysqli_error($cid));
$result=mysqli_affected_rows($cid);
if($result===TRUE)
  echo"The query ran successfully";
else
  echo"The query did not run";
mysqli_close($cid);

$ cidは、上記のコードの接続データを保持する変数であることに注意してください。

0
Vikash Mishra