#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>";
}