我希望能够找到借用特定CD并且必须在特定日期之前归还的所有客户的姓名和电话号码。
我为CD设置了表格(标题,类型,年份)和租金(租金数据,期限)。
我的尝试如下:
$query = "SELECT name, tel FROM customer WHERE '$_POST[cd_title]' AND '$_POST[rent_date]'; ";
$result = mysqli_query($con, $query);
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['tel'] . "</td>";
echo "</tr>";
}
echo "</table>";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "1 record found and listed";
但是,没有任何显示,除了die语句之外我没有收到任何错误(错误:)。我不知道在这一点上有什么问题。我假设这是我的查询,但是什么使它错了?
答案 0 :(得分:1)
您忘记了WHERE
子句
试试这个
$query = "SELECT name, tel FROM customer WHERE columnNameForTitle = '$_POST[cd_title]' AND columnNameForRentDate = '$_POST[rent_date]'; ";
Here's带有WHERE子句
的SQL查询的语法答案 1 :(得分:1)
您的查询中缺少某个条件;您需要在WHERE
谓词上添加条件。
在使用mysqli
时,您可以使用prepared statements。以下内容改编自文档:
$q = "SELECT name, tel FROM customer WHERE title = ? AND rent_date = ?";
$mysqli = new mysqli("localhost", "user", "password", "database");
$stmt = $mysqli->stmt_init(); # Initialize a statement
$stmt->prepare($q); # prepare it with the query
$stmt->bind_param("ss", $_POST['title'],$_POST['rent_date']);
$stmt->execute();
$stmt->bind_result($name, $tel); # Set the return values
# Fetch results
while ($stmt->fetch()) {
echo "<tr>";
echo "<td>" . $name . "</td>";
echo "<td>" . $tel . "</td>";
echo "</tr>";
}
$stmt->close(); # close the statement
关键行是bind_param
,它接受您的输入并将其绑定到准备好的语句;它还负责妥善逃避您的输入。
语句中的每个?
都是占位符(称为参数)。它将放置变量的位置(这称为绑定)。因此,您必须告诉bind_param
每个?
的变量类型,以便它可以正确转换/转义值。
类型是:
Character Description
i corresponding variable has type integer
d corresponding variable has type double
s corresponding variable has type string
b corresponding variable is a blob and will be sent in packets
由于您的查询中有两个?
,并且它们都是字符串,这就是您在调用中看到两个s
的原因。然后在逗号后面键入包含要发送到数据库的值的变量。类型的数量必须与?
的数量相匹配,当然您也需要传递相同数量的值。
答案 2 :(得分:0)
您的查询应包含用于获取记录的列名。类似的东西:
"SELECT name, tel FROM customer WHERE field1 = 'value' AND field2 = 'value2'";
答案 3 :(得分:0)
为了可读代码
// Change cd_title and rent_date with your columns names
$query = "SELECT name, tel FROM customer WHERE cd_title = '{$_POST["cd_title"]}' AND rent_date = '{$_POST["rent_date"]}';";
$result = mysqli_query($con, $query);
while($row = mysqli_fetch_array($result)){
// HEREDOC for html readability, see http://www.php.net/manual/pt_BR/language.types.string.php#language.types.string.syntax.heredoc
echo <<<HTML
<tr>
<td>{$row["name"]}</td>
<td>{$row["tel"]}</td>
</tr>
HTML;
}
echo "</table>";
if (!mysqli_query($con,$sql)){
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
我希望它有效。