首先以正確的方式,使用mysqli_*
或兩個不同的值PDO
,因爲mysql_*
已棄用並且在PHP 7中關閉。
在代碼中,您需要在$from_date
和$to_date
之間使用引號。
還有一件事,如果你的開始和結束日期相同,不知道你爲什麼使用BETWEEN,你可以簡單地使用=
。
這裏是你的代碼中使用MYSQLi Object Oriented完整的示例:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$to_date = $conn->real_escape_string($_POST['date']);
//$from_date = $conn->real_escape_string($_POST['date']);
$sql = "SELECT * FROM reports WHERE date = '$to_date'";
$result = $conn->query($sql);
$qty = 0;
if ($result->num_rows > 0) {
/* fetch associative array */
while ($row = $result->fetch_assoc()) {
$qty += $row['amount'];
}
echo $qty;
}
else
{
echo "No record found";
}
$conn->close();
?>
還要注意的是,如果這個查詢僅僅是用於獲取總量沒有其他用途,但您可以使用您的查詢,如:
SELECT SUM(amount) FROM reports WHERE date = '$to_date'
更新:
由於根據馬格納斯先生的建議,這裏是預備陳述的基本例子。
From the Manual:用戶輸入自動引用,因此 不存在SQL注入攻擊的風險。
<?php
$sql = "SELECT * FROM reports WHERE date = ?";
$stmt = $conn->prepare($sql);
if ($stmt->execute(array($_POST['date']))) {
while ($row = $stmt->fetch()) {
// your stuff
}
}
?>
SELECT SUM(數量)和FROM .... –
像' 「SELECT * FROM報告WHERE日之間的 '$ FROM_DATE' 和 '$ TO_DATE'」;'缺失報價 – devpro
1.唐不使用已棄用的'mysql_ *'函數。它們自PHP 5.5起棄用,並在PHP 7中完全刪除。請改用MySQLi或PDO。 2.你對[SQL Injections](http://php.net/manual/en/security.database.sql-injection.php)非常開放,並且應該使用[Prepared Statements](http://php.net) /manual/en/mysqli.quickstart.prepared-statements.php)而不是連接你的查詢,如果你使用上面提到的MySQLi或PDO,可以使用它們。 –