@Ira_Gushina

Не записываются данные в таблицу Mysql, как исправить?

Не записываются данные в одну из таблиц БД Mysql. На сервере PHP 7.2 и Mysql 5.5.67-MariaDB
Вот запрос на PHP.
Раз:
public function affiliate_has_childrens($affiliate_id=0){
			/*
			 * @param int
			 * @return boolean
			 */
			 if ($affiliate_id){
			 	 global $wpdb;
				 $table = $wpdb->prefix . 'uap_relations';
				 $q = $wpdb->prepare("SELECT id FROM $table WHERE parent_affiliate_id=%d ", $affiliate_id);
				 $data = $wpdb->get_row($q);
				 if ($data && !empty($data->id)){
				 	return TRUE;
				 }
			 }
			 return FALSE;
		}

Два:
public function add_new_relation($aff_id=0, $parent_aff_id=0){
			/*
			 * @param int, int
			 * @return none
			 */
			if ($aff_id && $parent_aff_id){
				global $wpdb;
				$table = $wpdb->prefix . 'uap_relations';
				$q = $wpdb->prepare("INSERT INTO $table VALUES(NULL, %d, %d);", $aff_id, $parent_aff_id);
				$wpdb->query($q);
			}
		}

Три:
public function rel_get_parent($child=0){
			/*
			 * @param int
			 * @return int
			 */
			if ($child){
				global $wpdb;
				$table = $wpdb->prefix . 'uap_relations';
				$q = $wpdb->prepare("SELECT parent_affiliate_id FROM $table WHERE affiliate_id=%d", $child);
				$data = $wpdb->get_row($q);
				if (!empty($data->parent_affiliate_id)){
					/// check if affiliate user exists
					$uid = $this->get_uid_by_affiliate_id($data->parent_affiliate_id);
					if ($uid){
						$table = $wpdb->base_prefix . 'users';
						$q = $wpdb->prepare("SELECT `ID`, `user_login`, `user_pass`, `user_nicename`, `user_email`, `user_url`, `user_registered`, `user_activation_key`, `user_status`, `display_name` FROM $table WHERE ID=%d ", $uid);
						$inside_data = $wpdb->get_row($q);
						if (!empty($inside_data->ID)){
							return $data->parent_affiliate_id;
						}
					}
				}
			}
			return 0;
		}

Подскажите что с ним не так? В логах сервера ошибок нет.
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
тут только один запрос на вставку, зачем тут 3 запроса?

В логах сервера ошибок нет.
Это говорит только о том что логирование не настроено

if ($aff_id && $parent_aff_id){
        global $wpdb; 
        $table = $wpdb->prefix . 'uap_relations';
        $sql = "INSERT INTO $table VALUES(NULL, %d, %d)";
var_dump([$aff_id, $parent_aff_id]);
var_dump($sql); exit(); //тут смотреть и думать
        $q = $wpdb->prepare($sql, [$aff_id, $parent_aff_id]); //здесь вроде массив должен быть
        $wpdb->query($q);
      }

Во первых посмотреть что в переменных, для этого есть вар_дамп.
Во вторых, если переменные не пустые, взять запрос, подставить руками значения и выполнить запрос из пхпмайадмин или из оболочки напрямую. Скорее всего какое-то поле является обязательным, но не входит в ваш запрос, либо первое поле (id?) не автоинкремент... В любом случае вы увидите ошибку.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы