6

このコードを取得したので、PHP を使用して MySQL のテーブルに値を挿入します。可能なすべての挿入構文を試しましたが、データが挿入されません...これは私が使用したコードです。

$param = "xyzxyz";
$param1 = "sdfdfg";
$sql = "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('".$param."','".$param1."')";
$result = $mysql->query($sql);
if($result)
   echo "successful";
else
   echo mysql->error;
if(mysql->errno==0)
   echo "successful"
else
   echo mysql->error;

次のSQL構文も試しました

"INSERT INTO trail (User_Name, Quiz_ID) VALUES ('$param1','$param1')";

"INSERT INTO `trail` (`User_Name`, `Quiz_ID`) VALUES ('$param1','$param1')";

私は他のいくつかを試しましたが、どれもテーブルに何も挿入しませんでした。これは MySQL のテーブルです。

trail

User_Name varchar(35)
Quiz_ID varchar(35)

何も挿入されず、エラーも表示されません。そして、テーブルから選択できるので、正しいDB接続があります。トリッキーなのはインサートだけです。

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

ありがとう

4

7 に答える 7

4

誰かが同様の問題を抱えている場合のメモ:

同様の問題がありました --- 挿入クエリは PHPMyAdmin で動作しますが、PHP では動作せず、エラーも発生しません (結果は常にtrueでした)。

その理由は、トランザクションを開始していたのにコミットするのを忘れていたからです...

$mysqli->autocommit(FALSE);

$mysqli->query( "START TRANSACTION" );

これを決して忘れないでください:

$mysqli->commit();

ばかげたエラーであることはわかっていますが、クエリのミステリーに集中しすぎて、数行上のトランザクション ステートメントを忘れてしまいました。

于 2014-02-10T00:56:05.220 に答える
3

最初に mysqli::$errno を確認してください。

if(mysql->errno==0)
   echo "successful"
else
   echo mysql->error;
于 2013-01-08T23:58:49.437 に答える
1

私がやったことは、デバッガーがインストールされていない場合は、クエリを電子メールで送信するだけです。このようにして、最終的なクエリが何であるかを確認できます。phpMyAdminのようなものにアクセスできる場合は、クエリを手動で実行して、何が起こるかを確認してください。もう1つは、挿入されたレコードを正しく検索していることを確認してください。レコード数が多いために検索クエリを使用している場合は、WHERE条件が正しいことを確認してください。これにより、何度か問題が発生しました。

編集 名前の周りに記号がない可能性があります。私はすべてのMySQLクエリを次のように実行する必要があります

`nameOfThing`

nameOfThingだけでなく

$param = "xyzxyz";
$param1 = "sdfdfg";
$sql = "INSERT INTO `trail` (`User_Name`, `Quiz_ID`) VALUES ('".$param."','".$param1."')";
$result = $mysql->query($sql);
if($result)
   echo "successful";
else
   echo mysql->error;
if(mysql->errno==0)
   echo "successful"
else
   echo mysql->error;
于 2013-01-09T00:49:51.483 に答える
0

参考までに、$param1 を 2 回挿入しています。

「;」もありません 「成功」をエコーし​​た後。

コード例をクリーンアップして、もう一度試してみることをお勧めします。

クリーンアップするもの

  1. $sql = "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('$param','$param1')"; 文字列連結で変数を連結する必要はありません。補間できます。ただし、実際には、SQL インジェクションの可能性を回避するために、準備済みステートメントで PDO を使用する必要があります。
  2. 足りないものを追加;
  3. その最初のチェックを入れif(mysql->errno==0)ます (このようなもののために PDO に切り替える場合を除きます)。
  4. mysql->errorなるように修正mysql->error()
  5. たぶん、コメントからのいくつかの他のもの。
于 2013-01-09T00:01:36.377 に答える
0

次のコードでエラーが発生せず、影響を受ける行が 1 つ表示される場合は、間違ったデータベースで結果を探している可能性があります。

ini_set('display_errors', 1);
error_reporting(E_ALL);

$sql = "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('testing','1')";
$mysql->query($sql);
var_dump($mysql->error,$mysql->affected_rows);
于 2013-01-09T03:55:08.543 に答える
0

私のテーブルは InnoDB テーブルで、テーブルを MyISAM に変更すると、挿入は正常に機能しました。さて、私はこれまでこの問題に遭遇したことはありません。まあ、それは当分の間トリックをしました。

トランザクションに InnoDB エンジンを使用したい場合は? PHP で InnoDB テーブルに値を挿入できるようにするにはどうすればよいですか? 誰か提案がありますか?私は WAMP サーバーを使用しており、MySQL はバージョン 5.5.24 です。そして、私は my.ini の InnoDB conf を変更しましたが、それもうまくいかないようでしたか?

于 2013-01-09T09:38:12.297 に答える
-1

これを試して

$param = "xyzxyz"; 
$param1 = "sdfdfg"; 
$sql = "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('".$param."','".$param1."')"; $result = $mysql_query($sql); if($result){ echo "successful";} else { echo " not successful;}

于 2013-07-29T05:52:34.057 に答える