Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP Мигриране от mysql_* към mysqli_

Добре, значи в първата функция, която се опитвате да замените

return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id');

Нека първо изясним какво прави това:

  • посочете заявка
  • извличане на резултата
  • вземете 0. ред („1-ви“ на английски)
  • получете колона user_id

Сега направете това стъпка по стъпка с mysqli_ :

//specify query
$result = mysqli_query(connect(),"SELECT `user_id` FROM `users` WHERE `username` = '$username'");
//fetch result
$row = mysqli_fetch_assoc($result);
//get column
return $row['user_id'];

Не е необходимо да указвате реда като fetch_assoc връща само едно.

Сега за втората функция

return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"), 0) ==1) ? $user_id : FALSE;
  • посочете заявка
  • извличане на резултат
  • вземете 0. ред
  • ако това е равно на 1:върнете user_id , в противен случай FALSE

Сега с mysqli_ :

//specify query
$result = mysqli_query(connect(),"SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'");
//fetch result
$row = mysqli_fetch_row($result);
//if first returned column is equal to 1 return $user_id
//otherwise FALSE
return ($row[0]==1) ? $user_id : FALSE;

Но изчакайте - защо използвах mysqli_fetch_row тук, докато mysqli_fetch_assoc беше използвано по-горе? RTM;)

Какво научихме днес? Само защото можете да напишете кода си възможно най-кратко, не означава, че трябва. Ако оригиналният код беше разделен малко повече, преходът към MySQLi трябваше да е доста лесен, тъй като бихте могли лесно да дебъгвате по-малки части вместо сложен израз.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LOAD DATA LOCAL INFILE дава грешка. Използваната команда не е разрешена с тази версия на MySQL

  2. изберете заявка за данни за категория с родителска дъщерна връзка

  3. MySql заявка:Изберете първите 3 реда от таблицата за всяка категория

  4. Обединяване на редове в същия идентификатор в масив

  5. Как да настроя PYTHON_EGG_CACHE променлива на средата на Mac?