• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpのデータベースを使用したsqlのエラー)

phpのデータベースを使用したsqlのエラー

このQ&Aのポイント
  • PHPでデータベースを読み込み、SQLにて処理するプログラムを作成していますが、エラーになってしまいます。
  • データベースへのアクセスはできるようですが、SQLの処理の部分でエラーが発生しています。
  • 外部から読んでいるSQLの問題の可能性があります。create.sqlというファイルを作成し、SELECT aaa,bbb,ccc FROM `test_table`としていますが、うまくいかないようです。解決方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

mysql関数とmysqli関数を並行して使っていてかなりダメな状況です mysqli関数に統一して処理するようにしてください

kmwrod
質問者

補足

回答ありがとうございます。 mysqliを検索し、プログラムを変更してみたところ、 Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in C:\xampp\htdocs\job_site4\search_criteria.php on line 62 Warning: mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement in C:\xampp\htdocs\job_site4\search_criteria.php on line 68 Warning: printf(): Too few arguments in C:\xampp\htdocs\job_site4\search_criteria.php on line 73 というエラーになりました。 以下ソースです。 /* 変数定義関連 */ /* mysqliの定義 */ global $mysqli; $mysqli = new mysqli('localhost', 'root', "", "db"); //$link = mysqli_connect('localhost', 'root', "", "db"); /* 接続状況をチェックします */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } print("<BR>"); /* 現在のデフォルトデータベース名を返します */ if ($result = $mysqli->query("SELECT DATABASE()")) { $row = $result->fetch_row(); printf("Default database is %s.\n", $row[0]); $result->close(); } print("<BR>"); /* データベースを a_db に変更します */ $mysqli->select_db("a_db"); /* 現在のデフォルトデータベース名を返します */ if ($result = $mysqli->query("SELECT DATABASE()")) { $row = $result->fetch_row(); printf("Default database is %s.\n", $row[0]); $result->close(); } // データベースのdump echo "<pre>";var_dump($mysqli);echo "</pre>"; /* プリペアドステートメントを作成します */ $sql = " SELECT * FROM `test_table` WHERE 1 "; // バインドデータ設定 $key = 1; if($stmt = $mysqli->prepare($sql)) { /* マーカにパラメータをバインドします */ $stmt->bind_param("i",$key); // バインドする変数に設定して送る /* クエリを実行します */ $stmt->execute(); /* 結果変数をバインドします */ $stmt->bind_result($col1,$col2); // バインドする変数分設定 /* 値を取得します */ $stmt->fetch(); printf("%s : %s\n", $col1.$col2); /* ステートメントを閉じます */ $stmt->close(); } // 切断 $mysqli->close(); よくわからないです・・

関連するQ&A