0

データをmysqlデータベースに入れる次のコードがあります。

$sql3 = "INSERT INTO $tableName (topic, title, date) VALUES ('$topic','$title','$today')";
mysql_query($sql3);

それは完全に機能します。

ただし、関数内でコードを使用すると機能しません。関数に渡されたパラメーターは、コードの他の場所で使用され、上記のコードの操作に影響を与えるべきではありません。

追加すると:

if(mysql_errno()){     
echo "MySQL error ".mysql_errno().": "          
.mysql_error()."\n<br>When executing <br>\n$query\n<br>"; }

エラーが発生します:

MySQL エラー 1064: SQL 構文にエラーがあります。使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを参照してください。1 行目付近で '(topic, title, date) VALUES ('weather','It look like Autumn is he' を実行すると、

コードが関数で使用されているときに SQL 構文エラーが発生する理由がわかりませんが、それ自体では発生しません。

事前にご協力いただきありがとうございます。

4

1 に答える 1

0

あなたの問題は、変数のスコープに関係している可能性が最も高いです。例えば:

$myVar = "Hello!";

// Outputs Hello!

echo $myVar;

function sayHello() {
    // $myVar is no longer in scope because we are "inside" the function.
    echo $myVar;
}

// undefined variable $myVar
sayHello();

関数内でクエリを実行すると、変数$tablenameはスコープ内になくなるため、クエリは次のようになります。

INSERT INTO (topic, title, date) VALUES ('$topic','$title','$today')

これは明らかに無効です。

関数に渡すか$tableName、クエリにハードコードするか、 を使用しますglobal。ただし、グローバル変数の使用は良い考えではありません。

于 2013-10-20T13:30:51.563 に答える