fork(1) download
  1. <?php
  2.  
  3. $host = 'localhost';
  4. $user = 'dk';
  5. $password = '12345';
  6. $database = 'ac_new';
  7.  
  8. $connect = @mysqli_connect(
  9. $host,
  10. $user,
  11. $password,
  12. $database);
  13.  
  14. mysqli_set_charset($connect, "utf8");
  15.  
  16. if (!$connect) {
  17. echo "Ошибка подключения. <br> Код: ".mysqli_connect_errno(). ". Пояснение: ".mysqli_connect_error();
  18. exit;
  19. }
  20. // получение структуры таблицы
  21. function show_col ($connect, $cols_need, $table) {
  22. $data=array();
  23.  
  24. $query="SHOW COLUMNS FROM ".$table."";
  25. $res=mysqli_query($connect, $query);
  26.  
  27. if ($res) {
  28. while($row=mysqli_fetch_assoc($res)) {
  29. foreach ($row as $key =>$value) {
  30. if (in_array($key,$cols_need)) {
  31. $sub_data[$key]=$value;
  32. }
  33. }
  34. $data['columns'][$row['Field']]=$sub_data;
  35. }
  36. } else {
  37. echo "<br> Ошибка выполнения запроса: ".mysqli_error($link);
  38. }
  39.  
  40. return $data;
  41. }
  42.  
  43. function print_arr ($arr) {
  44. echo '<pre>';
  45. print_r($arr);
  46. echo '</pre>';
  47. }
  48.  
  49. function update_base ($connect, $data, $table, $operation) {
  50.  
  51. $cols_need=array('Extra');
  52. $table_data= show_col ($connect, $cols_need, $table); // получили все поля таблицы
  53.  
  54. $col_keys=array_keys($table_data['columns']); // получили ключи полей
  55.  
  56. $keys="";
  57. $values="";
  58. $pairs="";
  59.  
  60. foreach ($data as $key => $value){
  61. //проверяем есть ли такое поле в таблице
  62. if (in_array($key,$col_keys)){
  63.  
  64. //проверяем на auto_increment
  65.  
  66. if ($key=="uid" or $key=="id" ) {
  67. //для update
  68. if ($operation=='update') {
  69. $where_update="`".$key."` = ".$value;
  70. } else { //если add или delete
  71. if ($table_data['columns'][$key]['Extra']=='auto_increment') {
  72. $value="";
  73. } else {
  74. //ищем максимальный uid в базе
  75. $q="SELECT max(".$key.") FROM ".$table;
  76. $res=mysqli_fetch_row(mysqli_query($connect,$q));
  77. //присваиваем следующий
  78. $value=$res[0]+1;
  79.  
  80. }
  81. }
  82. }
  83.  
  84. //для удаления
  85. $need_delete=implode($data); //получаем массив id
  86. $where_delete="`".$key."` IN (".$need_delete.")";
  87.  
  88.  
  89. $keys.="`".$key."`, ";
  90. $values.="'".$value."', ";
  91. $pairs.="`".$key."`="."'".$value."', ";
  92. }
  93. }
  94.  
  95.  
  96. $keys= substr($keys, 0, strlen($keys) - 2); //удаляем хвосты
  97. $values= substr($values, 0, strlen($values) - 2);
  98. $pairs= substr($pairs, 0, strlen($pairs) - 2);
  99.  
  100.  
  101. switch ($operation) {
  102. case 'add':
  103. $query="INSERT INTO ".$table." (".$keys.") VALUES (".$values.")";
  104. break;
  105.  
  106. case 'update':
  107. $query="UPDATE ".$table." SET ".$pairs." WHERE ".$where_update;
  108. break;
  109.  
  110. case 'delete':
  111. $query="DELETE FROM ".$table." WHERE ".$where_delete;
  112. break;
  113. }
  114.  
  115. echo '<br>'.$query;
  116. //$res = mysqli_query($connect, $query);
  117.  
  118. if ($res) {
  119. echo 'Запрос выполнен успешно';
  120. } else {
  121. echo 'Запрос не выполнен - проверьте код: '.mysqli_error($connect);
  122. }
  123.  
  124.  
  125. } //конец функции
  126.  
  127.  
  128.  
  129. $data=array('id'=>'7', 'city'=>'Иваново'); //массив данных, получаемый из форм
  130. $table='cities2'; //таблица
  131. $operation='update'; //тип операции
  132.  
  133. update_base ($connect, $data, $table, $operation);
Runtime error #stdin #stdout 0.02s 52472KB
stdin
Standard input is empty
stdout
Standard output is empty