выборка данных из столбца в mysql

#php #mysql #sql

#php #mysql #sql

Вопрос:

Я хочу извлекать только ту строку, у которой столбец (имя-время и временная метка типа) больше определенной временной метки и меньше определенной временной метки… Я использовал этот код, написанный ниже, но он выдает ошибку.. Я хочу знать, правильный ли это синтаксис sql или нет

 <?php
include_once'header.php';
$time=$_GET['t'];
$prev=$_GET['prev'];
$q="SELECT * FROM comment WHERE time<'$time' AND time >'$prev' ";
$r=mysql_query($q);
while($row=mysql_fetch_array($r))
{
echo "<p>".$row[4]."</p>";
}

?>
  

Ответ №1:

(взято из http://www.php.net/manual)

     $firstname = 'fred'; $lastname  = 'fox';

    // Formulate Query 
    // This is the best way to perform a SQL query 
    // For more examples, see mysql_real_escape_string() 
    $query = sprintf("SELECT firstname, lastname, address, age FROM friends WHERE firstname='%s' AND lastname='%s'",
        mysql_real_escape_string($firstname),
        mysql_real_escape_string($lastname));

    // Perform Query $result = mysql_query($query);

    // Use result
    // Attempting to print $result won't allow access to information in the resource
    // One of the mysql result functions must be used
    // See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
    while ($row = mysql_fetch_assoc($result)) {
        echo $row['firstname'];
        echo $row['lastname'];
        echo $row['address'];
        echo $row['age'];
    }
  

Суть здесь в том, что вам не следует использовать неэкранированные выражения в вашем запросе, поскольку они могут предоставить средства для внедрения SQL.

Кроме того, в вашем конкретном запросе вы можете использовать ключевое слово sql МЕЖДУ:

 $q=sprintf("SELECT * FROM comment WHERE time BETWEEN '%s' AND '%s'",
   mysql_real_escape_string($prev),
   mysql_real_escape_string($time));
  

Также обратите внимание, что mysql_query устарел, попробуйте вместо этого использовать mysqli_query.

Ответ №2:

вы установили соединение с mysql

 $conn = New mysqli(SERVER, USER, PASS, NAME);
if (!$conn)
{
die("Database connection failed: " . mysqli_error());
}
$result = $conn->query("SELECT * FROM comment WHERE time<'".$time."' AND time >'".$prev."' ");
while($row = mysqli_fetch_array($result))
{
echo "<p>".$row[4]."</p>";
echo "<br>";
}