1

から に移動しようとしMySQLMySQLiいますが、いくつか問題があります。私のSQLi接続は以下のように始まります:

$langCon=mysqli_connect('localhost', 'root', '', 'english');
if (!$langCon) die('Couldn\'t connect: '.mysqli_error());

セッションデータを保存するために使用しようとしMySQLiていますが、 _write コンストラクトでエラーが発生し続けます (エラーは 56 行目で発生するため、このように投稿します$stmt=...) :

function _write($id, $data){ /
        global $langCon;
        $stmt=mysqli_prepare($langCon,'REPLACE INTO `sess`(`id`,`access`,`data`) VALUES(?,?,?)');
        $id = mysqli_real_escape_string($langCon,$id);
        $data = mysqli_real_escape_string($langCon,$data);
        $t=$_SERVER['REQUEST_TIME'];
        return mysqli_query($langCon,"REPLACE INTO `sess`(`id`,`access`,`data`) VALUES('$id','$t','$data')");
    }

与えられたエラーは次Warning: mysqli_prepare() expects parameter 1 to be mysqli, null given in [...]settings.php on line 56のとおりです: (行は $stmt=...)

私の問題がどこにあるのか、誰か教えてください。

関数外のEDIT Var ダンプ、var_dump($langCon):

object(mysqli)#2 (18) { ["affected_rows"]=> int(0) ["client_info"]=> string(50) "mysqlnd 5.0.8-dev - 20102224 - $Revision: 321634 $" [" client_version"]=> int(50008) ["connect_errno"]=> int(0) ["connect_error"]=> NULL ["errno"]=> int(0) ["error"]=> string(0) "" ["field_count"]=> int(0) ["host_info"]=> string(20) "TCP/IP 経由のローカルホスト" ["info"]=> NULL ["insert_id"]=> int(0) ["server_info"]=> string(10) "5.5.21-log" ["server_version"]=> int(50521) ["stat"]=> string(130) "稼働時間: 373 スレッド: 1 質問: 5遅いクエリ: 0 開く: 34 テーブルをフラッシュする: 1 テーブルを開く: 27 1 秒あたりの平均クエリ数: 0.013" ["sqlstate"]=> string(5) "00000" ["protocol_version"]=> int(10) ["thread_id"]=> int(5) ["warning_count"]=> int(0) }

関数内の変数ダンプglobal $langCon; var_dump($langCon);: NULL。

4

1 に答える 1

1

マニュアルから; このようなことを試してください ($var->prepare のように見える必要があります)

$mysqli = new mysqli("localhost", "root", "", "english");
if ($mysqli->connect_errno) 
{
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!($stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (?)"))) 
{
    echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
于 2012-06-19T08:17:17.557 に答える