【问题标题】:storing value from variable in if else statement to database PHP将if else语句中的变量值存储到数据库PHP
【发布时间】:2017-06-09 08:39:24
【问题描述】:

这是昨晚问题的进展,现在我需要在 if/else 语句中从 $total 获取值并将其插入到我的数据库中。 $count['NumRows'] 为价格,$total 为total_all... 我已经阅读了有关使用implode 将值更改为数组的信息,但问题仍然存在,我的数据库仍然不会存储值...因为我不知道为什么,我需要帮助...

<?php
if (isset($_POST['submit'])) {
    $names      = $_POST['names'];
    $phones     = $_POST['telno'];
    $modelname  = $_POST['modelname'];
    $rentaldate = $_POST['rentaldate'];
    $numday     = $_POST['numday'];

    $sql = "INSERT INTO carbook (name, tel_no, model_name, rental_date, return_date, no_of_days) VALUES ('$names', '$phones', '$modelname', '$rentaldate', '$returndate', '$numday')";

    if ($conn->query($sql) == true) {
        echo "Name: $names";
        echo "<br/>Phones: $phones";
        echo "<br/>Car Name: $modelname";
        echo "<br/>Rental Date: $rentaldate";
        echo "<br/>Return Date: $returndate";
        echo "<br/>No Of Days: $numday";
        echo "<br/>";
    } else {
        echo "Error: $sql<br>$conn->error";
    }

    if ($modelname && $numday) {

        if ($modelname = 'Jetta') {

            $countrows = 'SELECT price_day AS NumRows FROM carlist WHERE carBookId = 1';
            $result    = $conn->query($countrows);
            $count     = $result->fetch_assoc();
            $total     = $count['NumRows'] * $numday;

            $total = number_format($total, 2);

            echo 'Price per day: RM<b>' . $count['NumRows'] . '</b>.<br/>';
            echo 'Total Price: RM<b>' . $total . '</b>.';

            $sql = "INSERT INTO carbook (price, total_all) VALUES ('$total', '$countrows')";

没有错误,但是数据库没有识别出这个值,它仍然在我的表中插入了 0。

编辑了这是我的表结构
table structure

【问题讨论】:

  • 这个查询是否应该计数carBookId 为一的行? SELECT price_day AS NumRows FROM carlist WHERE carBookId = 1'
  • 首先尝试将if ($modelname = 'Jetta') { 更改为if ($modelname == 'Jetta') { 我想您想将$modelname'Jetta' 进行比较,而不是设置$modelname 的值。
  • 这是一个错字$numday=$_POST["numday"]; ;
  • @RiggsFolly 假设在数据库表中获取价格
  • 那么这个查询是很误导人的。当你复制东西时,让它在新情况下有意义。 SELECT price_day AS NumRows 让您看起来像是在尝试获取行数,而不仅仅是获取价格

标签: php mysql


【解决方案1】:

您在插入查询中暂停了错误的变量

$numRows = $count['NumRows'];
$sql = "INSERT INTO carbook (price, total_all)
                            VALUES ('$numRows','$total' )";

编辑

从您的表结构中,我可以看到可能存在 2 个问题:

1) 在您的表中,还有其他字段也没有默认值,并且不能为 null 所以还要在插入查询中附加这些字段。

2) 对于 int 或 double 数据类型,不要将值括在单引号中

【讨论】:

  • 我使用了你给出的编码,没有错误,我认为它很好,但它仍然在我的数据库中给出 0...我的数据库中的表是否可能影响我的编码?
  • 显示你的表结构。你也在echo 'Price per day: RM&lt;b&gt;'. $count['NumRows'] . '&lt;/b&gt;.&lt;br/&gt;'; echo 'Total Price: RM&lt;b&gt;'. $total . '&lt;/b&gt;.';得到结果?
  • 我已经上传了我的表结构,是的,结果显示出来了,到目前为止没有错误,只是数据库还在 0
  • 我很难听从你的第一个建议...你能用更容易理解的术语解释一下,以及如何在插入查询中附加这些字段。结果还是 0...
【解决方案2】:

您正在尝试将变量 $countrows 中的字符串(查询)插入到您的 total_all 字段中。您数据库中的数据类型可能错误地解释了此字符串并插入了 0。 您需要将 $countrows 替换为您在查询中创建的别名。

$numberOfRows = $count['NumRows'];
$sql = "INSERT INTO carbook (price, total_all) VALUES ('$numberOfRows', '$total')";

编辑:这对我有用

$numberOfRows = $count['NumRows'];
$total     = $numberOfRows * 3;
$totalFormatted = number_format($total, 2);

echo 'Price per day: RM<b>' . $numberOfRows . '</b>.<br/>';
echo 'Total Price: RM<b>' . $totalFormatted . '</b>.';
$sql = mysql_query("INSERT INTO carbook (price, total_all) VALUES ('$total', '$numberOfRows')");

【讨论】:

  • 你在你的标题中说你想要这个 $count['NumRows'] 的价格和 $total 的 total_all 但在你的代码中你已经这样做了。您确定它们的顺序正确吗? INSERT INTO carbook (price, total_all) VALUES ('$total','$countrows' )" 是否需要这样INSERT INTO carbook (price, total_all) VALUES ('$countrows' ,'$total')"
  • 是的,我一直想知道这一点,因为我在 if 语句中进行了查询...我不知道它是否有效,因为这里没有显示错误 $sql = "INSERT INTO carbook (price, total_all) VALUES ('$numRows','$total')";
  • 那么首先 INSERT 上方的回声输出正确的值吗?如果他们正确输出它,那么这些值不是问题。数据库中每一列的数据类型是什么?
  • 我已经编辑并上传了上面的表格结构,告诉我你发现什么奇怪的好...
  • 看起来不错,但有空时请阅读此内容stackoverflow.com/questions/6831217/double-vs-decimal-in-mysql。你能告诉我你的 INSERT 上面的两个 echo 语句的输出是什么吗?回声 'Price per day: RM' 。 $count['NumRows'] 。 '.
    '; AND echo 'Total Price: RM' 。 $总计。 '.';
猜你喜欢
  • 2015-02-20
  • 1970-01-01
  • 2021-09-14
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 2018-01-09
  • 2020-11-24
  • 1970-01-01
相关资源
最近更新 更多