查找借用特定CD的所有客户的姓名和电话号码

时间:2013-05-23 12:16:40

标签: php mysql mysqli

我希望能够找到借用特定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语句之外我没有收到任何错误(错误:)。我不知道在这一点上有什么问题。我假设这是我的查询,但是什么使它错了?

4 个答案:

答案 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";

我希望它有效。