TheMaxai
@TheMaxai

Почему не записываются дынные в бд?

Пишет что все в порядке, а если зайти в бд, то там не чего нету.
// Параметры для подключения
$db_host = "localhost"; 
$db_user = "root"; // Логин БД
$db_password = ""; // Пароль БД
$db_table = "wp_options"; // Имя Таблицы БД
 
// Подключение к базе данных
$db = mysql_connect($db_host,$db_user,$db_password) OR DIE("Не могу создать соединение ");
 
// Выборка базы
mysql_select_db("wordpress",$db);
 
// Установка кодировки соединения
mysql_query("SET NAMES 'utf8'",$db);


$result = mysql_query ("INSERT INTO $db_table (option_name, option_value, autoload) VALUES ('sadsad','sadds', 'yes')");

if ($result = 'true'){
    echo "Информация занесена в базу данных";
}else{
    echo "Информация не занесена в базу данных";
}
  • Вопрос задан
  • 290 просмотров
Решения вопроса 3
В wordpress есть специальный php класс wpdb, который позволяет производить любые операции с базой данных.
Ответ написан
Комментировать
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Что это такое?
if ($result = 'true')
Во-первых, вы сравниваете со строчным значением 'true', а не булевым true.
Во-вторых, вы не сравниваете, а присваиваете. Присваиваете переменной $result строчное значение 'true', что всегда будет возвращать булевое true, независимо от того, что содержалось в переменной $result до этого (вы перезаписали ее значение). Таким образом, у вас всегда сработает if (а не else), независимо от результата выполнения mysql запроса. В комментариях oxidmod вам подсказал правильно:
//if ($result = 'true'){
if ($result){
    echo "Информация занесена в базу данных";
}else{
    //echo "Информация не занесена в базу данных";
    echo "Информация не занесена в базу данных: " . mysql_error();
}


Это что касается сюрприза и несбывшихся ожиданий. Что касается того, почему mysql не создает запись... Во-первых, mysqli. Во-вторых, в WordPress есть $wpdb.
Ответ написан
TheMaxai
@TheMaxai Автор вопроса
Вот так правильней:
global $wpdb;
$result = $wpdb->insert( 
    $wpdb->options, 
    array(
        'option_name' => 'xxx',
        'option_value' => 'yyy'
    ), 
	array( 
		'%s', 
		'%s'
	) 
);

if ( $result ) :
    echo "Информация занесена в базу данных";
else :
    echo "Информация не занесена в базу данных: " . $db->last_error;
endif;


а легче и лучше:
add_option( 'xxx', 'yyy' );

а моя ошибка - у меня стояло количество строк - 25, и я не видел остальные строки :)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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