Versale
@Versale
Начинающий web программист.

Error_reporting(E_ALL & ~E_NOTICE) или error_reporting(E_ALL)?

Уважаемые, добрые люди. Прошу помощи.
Есть код. Все понимаю, все окей. Только вот:

1 вопрос:
error_reporting(E_ALL & ~E_NOTICE);
ini_set('display_errors', 1);
Что здесь происходит, если можно в деталях?

2 вопрос:
можно ли вместо error_reporting(E_ALL & ~E_NOTICE) написать error_reporting(E_ALL)
Что поменяется? Почему у меня выдается ошибка?

3 вопрос:
"mysql" и "mysqli" в чем разница? Когда использовать то, когда другое?

4 вопрос:
while( $row = mysql_fetch_assoc( $result ) ) и while( $row = mysql_fetch_array( $result ) )
Опять же, когда то и когда второе? Что меняется?

5 вопрос:
Что здесь выполняет "true"? echo '', print_r($res_arr,true), '';
На практике вижу, на теории нуждаюсь в пояснениях.

Сразу извиняюсь, понимаю, что можно найти все в сети. Но как-то привык к сервису, плюс люди отзывчивые.
Спасибо Всем, кто отзовется.!

Вот код собственно:
<?php 
error_reporting(E_ALL & ~E_NOTICE);
ini_set('display_errors', 1);

function connect() {
$server = 'localhost';
$user = 'user';
$pass = 'pass';
$res = mysql_connect($server,$user,$pass) or die("Could not connect: " . mysql_error());
mysql_set_charset('utf8',$res);
mysql_select_db('database');
return $res;
}

$db = connect();
$query = "SELECT * FROM `data`";
$result = mysql_query($query);

$delete = array();
$update = array();
$new = array();

while( $row = mysql_fetch_assoc( $result ) ) {
	
	
	if ( in_array( $row['ident'], $_GET['ident'] ) )
		{
			$key = array_search( $row['ident'], $_GET['ident'] );
		
			if ( $row['version'] > $_GET['version'][$key] )
				{
					$update[ $row['ident'] ] = array(
													'value' 	=> $row['value'], 
													'version'	=> $row['version'],
													);
				}
			unset( $_GET['ident'][$key] );
			unset( $_GET['value'][$key] );
			unset( $_GET['version'][$key] );
		}
	else
		{
			$new[$row['ident']] = array(
											'value' 	=> $row['value'], 
											'version'	=> $row['version'],
			);
			
		}
}

if ( !empty( $_GET['ident'] ) )
	{
		foreach( $_GET['ident'] as $key1 => $line )
			{
				$delete[] = $_GET['ident'][$key1];
			}
	}
	$res_arr = array(
						 'delete' => $delete,
						 'update' => $update, 
						 'new' => $new
					);
	echo '<pre>', print_r($res_arr,true), '</pre>';
	?>
  • Вопрос задан
  • 3046 просмотров
Решения вопроса 1
abler98
@abler98
Software Engineer
1. error_reporting(E_ALL & ~E_NOTICE); // включается вывод всех ошибок, кроме E_NOTICE
Использовать ini_set('display_errors', 1); // включает показ ошибок
2. Да, только так вы еще ошибки E_NOTICE будете получать
3. Одно из преимуществ mysqli в том, что в нем есть ООП стиль (инетерейс) + он работает быстрее mysql
4. mysql_fetch_array при указании второго параметра может возвращать ассоциативный или численный массив, без него - объединенный
mysql_fetch_assoc и mysql_fetch_num возвращает только один тип массива
5. echo '', print_r($res_arr,true), ''; - это вообще ГК, можно просто print_r($res_arr); - выводит массив в виде строки, но если указать второй паремтр true - функция вернет результат, а не выведет.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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