-1

問題が発生しています。以下のコードでは、データベースを明確に選択していますが、まだ選択していないというエラーが表示されます。誰かが私が間違っていることを教えてもらえますか?

<?php

$nc = mysqli_connect("localhost", "264191", "adhiambo95");
if (mysqli_connect_errno())
{
    echo "Sorry I couldn't connect to mysql: " . mysqli_connect_error();
}

mysqli_select_db($sc, "264191");

$sis = "INSERT INTO nogata_keywords ('keyword')
    VALUE ('.$_GET[keyword]')";

if (!mysqli_query($nc,$sis))
{
    die('Error: ' . mysqli_error($nc));
}

else
{
    echo "This keyword has been added to the database.";
}

?>
4

5 に答える 5

4

ここで接続リソース変数のスペルが間違っています:

mysqli_select_db($sc, "264191");

する必要があります

mysqli_select_db($nc, "264191");

mysqli_connectまた、データベースを 4 番目のパラメーターとして指定できるため、上記の行が冗長になります。

$nc = mysqli_connect("localhost", "264191", "adhiambo95", "264191");

やってみて。


Yogesh Suthar によって最初に指摘されたもう 1 つのことは、SQL クエリが間違っていることです。

$sis = "INSERT INTO nogata_keywords ('keyword') VALUE ('.$_GET[keyword]')";

する必要があります

$sis = "INSERT INTO nogata_keywords (`keyword`) VALUE ('".$nc->real_escape_string($_GET['keyword'])."')";

フィールド名を一重引用符で囲み、データベースに挿入する値をエスケープしていないためです。つまり、キーワードが O'Neil の場合、SQL が無効になります。

この問題を回避するには、使用prepare()に切り替えることを検討してください。bind()

実際には定数であるキーワードだけでなく、$_GET 配列へのインデックスとして「キーワード」も使用する必要があります。http://php.net/manual/en/language.types.array.php

于 2013-05-14T09:33:14.020 に答える
3

間違った接続変数 $sc を使用しています。$nc である必要があります

mysqli_select_db($nc, "264191");

「264191」がデータベース名であると仮定します。

于 2013-05-14T09:33:11.140 に答える
1

でエラーが発生しました$sis。とにかく、データベースが本当に存在するかどうかを確認する必要があるかもしれません。そして、あなたはそれにアクセスするための適切な許可を持っています

于 2013-05-14T09:33:36.910 に答える
0

データベース名を 4 パラメータとして渡すこともできますmysqli_connect

mysqli_connect("localhost", "264191", "adhiambo95","264191");

これも

$sis = "INSERT INTO nogata_keywords ('keyword')
VALUE ('.$_GET[keyword]')";
       ^^

編集

する必要があります

$sis = "INSERT INTO nogata_keywords (`keyword`)
VALUE ('$_GET[keyword]')";

を使用'しましたが、列名keywordを使用する必要があります`

于 2013-05-14T09:36:08.530 に答える