0

データベースにエントリを挿入するプリペアドステートメントがあります。ステートメントは正常に機能し、エントリを挿入します。ステートメントを関数でラップし、関数を呼び出すと、データベースに挿入されなくなります。関数からこれらのステートメントを呼び出すことに問題はありますか?補足...私の最終目標は、実際にこの関数をメソッドとしてクラスに配置することです。私はそれを試みていて、トラブルシューティングを開始し、関数を入力するとエラーが始まると判断しました。次のステップは、これをクラスに移動することです。それが可能になるのを妨げる何かが私のコードにありますか?

<?php

include 'main_connection.php';

function add() {
    $stmt = $mysqli->prepare("INSERT INTO user (name) VALUES (?)");
    $stmt->bind_param('s',$name);
    $name = "test";
    $stmt->execute();
    $stmt->close();

}

add();  

?>
4

2 に答える 2

3

可変スコープの問題があります。具体的には、変数またはadd()を知りません。$mysqli$name

これを解決する方法はたくさんあります。簡単な提案は、パラメータをadd()次の場所に渡すことです。

function add($mysqli, $name) {
  // your code
}

add($mysqli, $name);

または、グローバルスコープを使用するには:

function add() {
  global $mysqli, $name;
  // your code
}

免責事項:私も主張していません。以下を参照してください-関数のPHPグローバル

于 2012-11-14T20:58:23.753 に答える
1
function add($mysqli, $name) {
    $stmt = $mysqli->prepare("INSERT INTO user (name) VALUES (?)");
    $stmt->bind_param('s',$name);
    $name = "test";
    $stmt->execute();
    $stmt->close();

}

add($mysqli, $name); 
于 2012-11-14T21:00:00.927 に答える