Почему сценарию не нравится использовать MySQLi, но он подходит для MySQL? - PullRequest
0 голосов
/ 25 февраля 2010

У меня возникают некоторые проблемы с использованием mysqli для выполнения скрипта с запросами SELECT, DELETE, INSERT и UPDATE. Они работают при использовании нормы mysql, такой как mysql_connect, но я получаю странные результаты при использовании 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 ]

0 голосов
/ 25 февраля 2010

Вы выполняете все операторы одновременно, что касается php, поэтому такие функции, как затронутые строки или последний добавленный идентификатор, не будут работать должным образом. (Поправьте меня, если я ошибаюсь, я давно не пользуюсь mysqli.)

0 голосов
/ 22 апреля 2010

некоторые функции mySqli нуждались в некоторой обработке, например, в том числе $ link

0 голосов
/ 25 февраля 2010

Вот как я обычно использую 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 - это метод этого класса, который возвращает класс результата, который имеет собственные методы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...