0


0

スクリプトがMySQLiの使用を好まないのに、MySQLで問題ないのはなぜですか?

mysqliを使用して、SELECT、DELETE、INSERT、およびUPDATEクエリでスクリプトを実行するときに問題が発生します。 これらは、mysql_connectなどの標準のmysqlを使用する場合は機能しますが、mysqliを使用する場合は奇妙な結果が得られます。 他のスクリプトの多くのSELECTクエリでは問題なく動作しますが、管理者の作業に関しては混乱します。

スクリプト全体を添付せずに説明するのは困難です。

これは変更するための関数です…​

function database_queryModify($sql,&$insertId)
  {
    global $databaseServer;
    global $databaseName;
    global $databaseUsername;
    global $databasePassword;
    global $databaseDebugMode;

    $link = @mysql_connect($databaseServer,$databaseUsername,$databasePassword);

    @mysql_select_db($databaseName,$link);

    $result = mysql_query($sql,$link);

    if (!$result && $databaseDebugMode)
    {
      print "[".$sql."][".mysql_error()."]";
    }

    $insertId = mysql_insert_id();

    return mysql_affected_rows();
  }

そして、mysqliのために私がそれを変更したものがここにあります

function database_queryModify($sql,&$insertId)
  {
    global $databaseServer;
    global $databaseName;
    global $dbUser_feedadmin;
    global $dbUser_feedadmin_pw;
    global $databaseDebugMode;

    $link = @mysqli_connect($databaseServer,$dbUser_feedadmin,$dbUser_feedadmin_pw,$databaseName);
    $result = mysqli_query($link, $sql);

    if (!$result && $databaseDebugMode)
    {
      print "[".$sql."][".mysqli_error()."]";
    }
    $insertId = mysqli_insert_id();
    return mysqli_affected_rows();
  }

それは正しいですか?

実際にはエラーを生成していませんが、mysqlを使用する場合と同じように機能していません。 何か案は?

3 Answer


0


私が通常Mysqliを使用する方法は次のとおりです

$mysqli = new mysqli($myServer, $myUser, $myPass, $myDB);
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit;
}
$result = $mysqli->query($query);

while ($row=$result->fetch_assoc()) {
  print_r($row);
}

注:mysqliはクラス、$ mysqliはそのクラスのインスタンスを保持する変数、queryは独自のメソッドを持つ結果クラスを返すそのクラスのメソッドです。


0


phpに関する限り、すべてのステートメントを一度に実行しているため、影響を受ける行や最後に挿入されたIDなどの関数は期待どおりに機能しません。 (間違っている場合は、mysqliをしばらく使用していませんでした。)


0


一部のmySqli関数には、$ linkを含めるなどの調整が必要でした