Ответы пользователя по тегу MySQL
  • Как сделать одну функцию, что бы она была и для вывода заголовков, описания и другого?

    photozoom
    @photozoom
    <?php
    function the_name_contact($param) { 
    $result = mysql_query("SELECT * FROM contacts");
    if ("title" == $param) {
        while ($row = mysql_fetch_assoc($result))  {
          echo $row['name_contact'];
          }
    } elseif ("desc" == $param) {
        while ($row = mysql_fetch_assoc($result))  {
          echo $row['description'];
          }
    } 
    };
    ?>
    Ответ написан
  • Почему фильтр срабатывает неправильно?

    photozoom
    @photozoom
    Если вам действительно нужно случайным образом располагать строки в результате вашего запроса, то существует множество лучших способов решить такую задачу. Конечно, это будет реализовано дополнительным кодом, но вы будете спасены от проблемы, которая растет по экспоненциальному закону вместе с ростом объема данных. Дело в том, что MySQL выполняет операцию RAND() (которая занимает время процессора) для каждой отдельной строки в таблице перед тем, как отсортировать ее и выдать вам только одну строку.
    // Так делать НЕ НУЖНО:
    	$r = mysql_query("SELECT username FROM user ORDER BY RAND() LIMIT 1"); 
    
    	// Вот так будет лучше работать:
    	$r = mysql_query("SELECT count(*) FROM user");
    	$d = mysql_fetch_row($r);
    	$rand = mt_rand(0,$d[0] - 1);
    	$r = mysql_query("SELECT username FROM user LIMIT $rand, 1");


    Так вы получаете случайное число, которое меньше, чем количество строк в результате запроса, и используете его как смещение в предложении LIMIT.
    Источник
    Ответ написан
    Комментировать