• Почему запрос prepare не работает с like?

    TemaTM
    @TemaTM Автор вопроса
    Parse error: syntax error, unexpected '%' in

    LIKE ?");
    
    		mysqli_stmt_bind_param($search_articles, 's', %$search%);
    
    %{$search}%
    
    '%'.$search.'%'
    
    Only variables can be passed by reference in
    
    LIKE ?");
    
    		mysqli_stmt_bind_param($search_articles, 's', $search);
    
    работает но не ищет вообще по запросу
  • Почему запрос prepare не работает с like?

    TemaTM
    @TemaTM Автор вопроса
    Спасибо огромное вам. Но это наверное в mysql дело или может на хостинге заработает

    apache 2-4, php 5.6 mysql 5.7 open server

    object(mysqli_stmt)#2 (10) { ["affected_rows"]=> int(0) ["insert_id"]=> int(0) ["num_rows"]=> int(0) ["param_count"]=> int(1) ["field_count"]=> int(9) ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["sqlstate"]=> string(5) "00000" ["id"]=> int(1) } Ошибка запроса!

    mysql воспринимает запрос почему-то только '%$search%' так у меня работало без prepare

    $search_articles = mysqli_prepare($connect, "SELECT post_id, post_title, post_description, post_keywords, post_author, post_date, post_image, post_content, post_link FROM post WHERE post_title LIKE ?");
    
    		mysqli_stmt_bind_param($search_articles, '%s%', $search);


    Warning: mysqli_stmt_bind_param(): Number of elements in type definition string doesn't match number of bind variables in
  • Как вывести assoc массив в mysqli?

    TemaTM
    @TemaTM Автор вопроса
    ThunderCat: я pdo конечно буду юзать спасибо огромное. Просто ради интереса написан cms на процедурном по шаблону mvc с mysql перешёл недавно) mysql -> mysqli -> pdo скоро доберусь до pdo)
  • Как вывести assoc массив в mysqli?

    TemaTM
    @TemaTM Автор вопроса
    ThunderCat: я щас только написал свой плохо пахнущий. Сомневаюсь что это лучшее решение( Жаль что mysqli_stmt_fetch_assoc нету(

    function get_post_old($param_name_article)
    	{
    		global $connect;
    
    		$post_old = mysqli_prepare($connect, "SELECT post_id, post_title, post_description, post_keywords, post_author, post_date, post_image, post_content, post_link FROM post WHERE post_link = ? LIMIT 1");
    
    		@mysqli_stmt_bind_param($post_old, "s", $param_name_article);
    
    		if(!$post_old)
    		{
    			echo 'Ошибка таблицы!';
    			//запись в логи
    			exit();
    		}
    
    		if(!@mysqli_execute($post_old))
    		{
    			echo 'Ошибка запроса!';
    			//запись в логи
    			exit();
    		}
    
    		mysqli_stmt_bind_result($post_old, $post_id, $post_title, $post_description, $post_keywords, $post_author, $post_date, $post_image, $post_content, $post_link);
    
    		while(mysqli_stmt_fetch($post_old))
    		{
    
    			$name_post_old = array
    			(
    				'post_id' => $post_id, 
    				'post_title' => $post_title, 
    				'post_description' => $post_description, 
    				'post_keywords' => $post_keywords, 
    				'post_author' => $post_author, 
    				'post_date' => $post_date, 
    				'post_image' => $post_image, 
    				'post_content' => $post_content, 
    				'post_link' => $post_link
    			);
    
    			$name_post_old['manth'] = mb_substr($name_post_old['post_date'], 5, 2);
    			$name_post_old['manth'] = manth($name_post_old['manth']);
    			$name_post_old['years'] = mb_substr($name_post_old['post_date'], 0, 4);
    			$name_post_old['day'] = ltrim(mb_substr($name_post_old['post_date'], 8, 2), '0');
    
    			$res_post_old[] = $name_post_old;
    			
    		}
    
    		mysqli_stmt_close($post_old);
    
    		return $res_post_old;
    	}
  • Стоит ли удалять все символы из $_GET['submit']?

    TemaTM
    @TemaTM Автор вопроса
    FanatPHP: доброго времени суток. Сделал на процедурном подходе пробную cms с использованием mvc. Я знаю что за рефакторинг кода платят деньги, и время свое личное тратят. Но я самоучка и у меня нет средств на это. Не могли бы вы если будет время пробежаться своим профессиональным взглядом. У меня плохо пахнущий. А у вас изящный стиль. Что можно сократить или улучшить...

    //model
    
    function get_post_old($param_name_article)
    	{
    		global $connect;
    
    		$post_old = mysqli_prepare($connect, "SELECT post_id, post_title, post_description, post_keywords, post_author, post_date, post_image, post_content, post_link FROM post WHERE post_link = ? LIMIT 1");
    
    		@mysqli_stmt_bind_param($post_old, "s", $param_name_article);
    
    		if(!$post_old)
    		{
    			echo 'Ошибка таблицы!';
    			//запись в логи
    			exit();
    		}
    
    		if(!@mysqli_execute($post_old))
    		{
    			echo 'Ошибка запроса!';
    			//запись в логи
    			exit();
    		}
    
    		mysqli_stmt_bind_result($post_old, $post_id, $post_title, $post_description, $post_keywords, $post_author, $post_date, $post_image, $post_content, $post_link);
    
    		while(mysqli_stmt_fetch($post_old))
    		{
    
    			$name_post_old = array
    			(
    				'post_id' => $post_id, 
    				'post_title' => $post_title, 
    				'post_description' => $post_description, 
    				'post_keywords' => $post_keywords, 
    				'post_author' => $post_author, 
    				'post_date' => $post_date, 
    				'post_image' => $post_image, 
    				'post_content' => $post_content, 
    				'post_link' => $post_link
    			);
    
    			$name_post_old['manth'] = mb_substr($name_post_old['post_date'], 5, 2);
    			$name_post_old['manth'] = manth($name_post_old['manth']);
    			$name_post_old['years'] = mb_substr($name_post_old['post_date'], 0, 4);
    			$name_post_old['day'] = ltrim(mb_substr($name_post_old['post_date'], 8, 2), '0');
    
    			$res_post_old[] = $name_post_old;
    			
    		}
    
    		mysqli_stmt_close($post_old);
    
    		return $res_post_old;
    	}


    //views
    
    if($post_old)
                    {
                        foreach($post_old as $name) 
                        {
                            echo '<h2>
                        <a href="'.PATH.$ref.'">'.$name['post_title'].'</a>
                    </h2>
                    <p class="lead">
                        by <a href="'.PATH.'">'.$name['post_author'].'</a>
                    </p>
                    <p><span class="glyphicon glyphicon-time"></span> Опубликовано '.$name['day'].' '.$name['manth'].' '.$name['years'].'</p>
                    <hr>
                    <img class="img-responsive" src="'.$name['post_image'].'" alt="">
                    <hr>
                    <p>'.$name['post_content'].'</p>
                     <a class="btn btn-primary" href="'.PATH.$ref.'"><span class="glyphicon glyphicon-chevron-left"></span> Назад</a>
    
                     <hr>';
    
                        }
                    }


    //controller
    
    <?php
    	defined('NAMESITE') or die('Access denied');
    
    	ob_start();
        session_start();
    
    	require_once MODEL;
    
    	$top_menu = get_top_menu();
    	$sidebar_category = get_sidebar_category();
    	$post_all = get_post_all();
    	$go_search = htmlspecialchars($_POST['go_search']);
    
    	if(isset($go_search))
    	{
    		$search = htmlspecialchars($_POST['search']);
    
    		if(empty($search))
    		{
    			$messages = 'Вы не ввели поисковой запрос!';
    		}
    
    		elseif(mb_strlen($search) >= 32) 
    		{
    			$messages = 'Слишком большой поисковой запрос!';
    		}
    
    		else
    		{
    			$search_articles = get_search_articles($search);
    
    			if($search_articles)
    			{
    				foreach ($search_articles as $num) {
    					$num = $num['num'];
    				}
    			}
    
    			if ($num > 0) 
    			{
    				$messages = "По вошему запросу найдено: $search";
    			}
    
    			else
    			{
    				$messages = "$search Не найдено!";
    			}
    
    		}
    	}
    
    	$url_address = htmlspecialchars($_SERVER['REQUEST_URI']);
    	$path = htmlspecialchars($_SERVER['PHP_SELF']);
    	$path = mb_substr($path, 0, strpos($path, 'index.php'));
    
    	if($path === PATH)
    	{
    		$request_url = mb_substr($url_address, strlen(PATH));
    		$url = explode('/', rtrim($request_url, '/'));
    		$controller = $url[0];
    
    		if($top_menu || $sidebar_category || $post_all)
    		{
    			foreach ($top_menu as $name_m) 
    			{
    				$name[] = $name_m['link_category'];
    			}
    
    			foreach ($sidebar_category as $namesis) 
    			{
    				$names[] = $namesis['link_cat'];
    			}
    
    			foreach ($post_all as $all) 
    			{
    				$art[] = $all['post_id'];
    				$arti[] = $all['post_link'];
    			}
    
    			if(empty($controller))
    			{
    				$title = 'Главная';
    
    				$ref = 'articles';
    
    				require_once VIEW.'index.php';
    
    			}
    
    			elseif($controller === 'search')
    			{
    				$title = 'Поиск';
    
    				$message_s = $messages;
    
    				$ref = $controller;
    
    				if($ref === 'search')
    				{
    					$ref = 'articles';
    				}
    
    				require_once VIEW.'search.php';
    			}
    			
    
    			elseif(in_array($controller, $names) || in_array($controller, $name) || (in_array($controller, $arti) && !empty($url[1])))
    			{
    				$key = array();
    				$value = array();
    
    				if(!empty($url[1]))
    				{
    					$param_name_article = $url[1];
    
    					$post_old = get_post_old($param_name_article);
    
    					if(in_array($param_name_article, $arti))
    					{
    					
    						$ref = $controller;
    					
    						require_once VIEW.'article.php';
    					}
    
    					else
    					{
    						echo '404';
    					}
    				}
    
    				else
    				{
    					$title = 'Статьи';
    
    					$ref = $controller;
    
    					if(in_array($ref, $names))
    					{
    						$post_cat = get_post_category($ref);
    
    						require_once VIEW.'article_cat.php';
    					}
    					else
    					{
    						require_once VIEW.'index.php';
    					}
    				}
    			}
    
    			else
    			{
    				echo '404';
    				exit();
    			}
    			
    		}
    
    	}
  • Warning: mysqli_stmt_bind_param() не понимаю что в запросе вызывает ошибку?

    TemaTM
    @TemaTM Автор вопроса
    Спасибо огромное вам! я с mysql перешёл только теперь mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, string given in

    я полный 0 хоть и не раз перечитывал оф документацию(
  • Стоит ли удалять все символы из $_GET['submit']?

    TemaTM
    @TemaTM Автор вопроса
    FanatPHP: isset($_GET['submit']) туда тоже возможно вписать код наверно. '] /*

    Мне только cms свою написать с нуля и публиковать статьи чтобы материал не забыть. смотрел всяких Евгениев Поповых, Русаковых перешёл постепенно на hexlet, itvdn. Сейчас остановился на Udemy https://coursehunters.net/course/udemy-php-for-beg... хоть я не знаю англ я понимаю по коду только что он делает) Я уже 3 год сайт с нуля написать хочу( Жаль алгоритмы поиска не палят только like math again

    У меня плохое понимание про безопасность. Если фильтровать весь вод пользователей,
    загруженные картинки, файлы, ставить заглушки если сервер неправильно настроен, закрывать файлы от прямого доступа define("TEST', TRUE) defined(TEST) or exit('Access denied!); использовать правильно pdo от mysql инъекций что у меня с ним проблемы переучиться после mysql или начальных знаний mysqli трудно. То всё равно кто-нибудь взломает. Это только базовые вещи на мой взгляд. Хотел бы я все бреши знать( Если насобирать фрагменты кода по всему интернету может получиться что нибудь сделать норм. У вас код элегантный сколько ушло времени на такой высокий уровень может вы не только php знаете но и c#, python, java, ruby?

    Не подскажете возможно ли отделить html от php? Закрывать ли ?> в большинстве framework - ax и cms заметил что они не закрывают тег php. Наверно я вам надоел?

    <?php
    
    echo '<p>Hi Bro</p>';//Этим способом сейчас пользуюсь(
    
    <p><?php echo Hi Bro; ?><p>
    
    <p><?= Hi Bro; ?><p>
    
    <?php
    echo '<p>';?>
    Hi Bro
    <?php echo '</p>';?>
  • Стоит ли удалять все символы из $_GET['submit']?

    TemaTM
    @TemaTM Автор вопроса
    FanatPHP: да точно. submit тоже нужно обработать?
  • Стоит ли удалять все символы из $_GET['submit']?

    TemaTM
    @TemaTM Автор вопроса
    Спасибо огромное! Даже не знал про очищающие фильтры. Я бы пожал вам руку при встречи!
  • Как экспортировать функцию по умолчанию в js?

    TemaTM
    @TemaTM Автор вопроса
    abberati: на меня интерпретатор ругается( Сижу уже 2 день что php что js пространства имён тёмный лес(

    1)solution.js
    import {square as sqrt} from './sqrt';
    const sumOfSquares = (a, b) => {
    	return 1 / 2 * (a * sqrt(b * b - a * a / 4));
    };
    sumOfSquares(3, 2); //Реализуйте функцию которая находит площадь равнобедренного треугольника может параметры не подходят?


    2)sqrt.js
    //export default square => Math.sqrt(num);
    const square = (num) => {
    return  Math.sqrt(num);
    };
    export default square;


    Uncaught SyntaxError: Unexpected token import
    Uncaught SyntaxError: Unexpected token export
  • Правильно ли на php организован вывод статей?

    TemaTM
    @TemaTM Автор вопроса
    Спасибо огромное я даже не знал что есть PHP 7.0.
  • Правильно ли на php организован вывод статей?

    TemaTM
    @TemaTM Автор вопроса
    Нет, просто я весь код вместе написал. А так у меня в модели взаимодействие с базой.