Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP在MySQL中形成多行_Php_Mysql - Fatal编程技术网

PHP在MySQL中形成多行

PHP在MySQL中形成多行,php,mysql,Php,Mysql,我搜索了又搜索,也许我真的找到了正确的帖子,但对我来说什么都不管用,所以很抱歉有重复,但也许有人可以帮我 我有一个php,它让我得到一个具有多行的表单(基于之前的表单输入) 以下是创建输入表的php: <html> <head></head> <body> New report with EEM Number:<input type="text" name="eemnumber" /> <tr> <td>

我搜索了又搜索,也许我真的找到了正确的帖子,但对我来说什么都不管用,所以很抱歉有重复,但也许有人可以帮我

我有一个php,它让我得到一个具有多行的表单(基于之前的表单输入)

以下是创建输入表的php:

<html>
<head></head>
<body>
New report with EEM Number:<input type="text" name="eemnumber" />
<tr>
    <td>Expense Date</td>
    <td>Category</td>   
    <td>Vendor</td>
    <td>Receipt Amount</td>
    <td>Currency</td>
    <td>Payment Amount</td>
    <td>Currency</td>   
    <td>Payment Type</td>   
    <td>Country</td>
</tr>
<?php
$rows = $_POST['rows'];
$n = 0;
while($n < $rows)
         {
         $n++;
         ?>
         <tr>
    <td><input type="date" name="expensedate"/><br /></td>
    <td><select name="category">
        <option value="AirFare">AirFare</option> />
        <option value="AutoRental">Auto Rental - Employee</option> />
        <option value="DailyAllowance">Daily Allowance Standard</option> />
        <option value="Gasoline">Gasoline - Auto Rental</option> />
        <option value="Lodging">Lodging (Hotel) - Room / Tax</option> />
        <option value="Meals">Meals / Entertain - HP only, Travel</option> />
        <option value="Misc">Miscellaneous</option> />
        <option value="Taxi">Taxi / Subway / Bus / Train</option> />
        <br/>
    </td>
    <td><input type="text" name="vendor"/><br /></td>
    <td><input type="text" name="receiptamount"/>
    </td>
    <td><select name="currrec">
        <option value="EUR">EUR</option> />
        <option value="SEK">SEK</option> />
        <option value="USD">USD</option> />
        </td>
    <td><input type="text" name="paymentamount"/>
    </td>
    <td><select name="currpay">
        <option value="EUR">EUR</option> />
        <option value="SEK">SEK</option> />
        <option value="USD">USD</option> />
    </td>
    <td><select name="paytype">
        <option value="cash">Cash</option> />
        <option value="cc">Credit Card</option> />
        <br/>
    </td>
    <td><select name="country">
        <option value="DE">Germany</option> />
        <option value="SE">Sweden</option> />
        <option value="US">USA</option> />
        <br/>
    </td>
</tr>
<?PHP
}
?>
  </table>
 </div>
<p>
<input type="submit"/>
</form>
<!-- End of FORM -->
<a href="./index.php">Back</a>
  </body>
</html>

带有EEM编号的新报告:
费用日期
类别
小贩
收款金额
通货
付款金额
通货
支付类型
国家

机票/> 汽车租赁-员工/> 每日津贴标准/> 汽油-汽车租赁/> 住宿(酒店)-客房/税费/> 餐饮/娱乐-仅限HP,旅行/> 杂项/> 出租车/地铁/公共汽车/火车/>

欧元/> 瑞典克朗/> 美元/> 欧元/> 瑞典克朗/> 美元/> 现金/> 信用卡/>
德国/> 瑞典/> 美国/>
因此,一旦输入了所有数据,我就单击Submit,当然希望将每一行都输入到我的数据库中。这是我尝试使用的脚本,但只得到最后一个

    <?php
$con=mysqli_connect("localhost","user","pass","db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$eemnumber=$_POST['expensedate'];
$expensedate=$_POST['expensedate'];
$category=$_POST['category'];
$vendor=$_POST['vendor'];
$receiptamount=$_POST['receiptamount'];
$currrec=$_POST['currrec'];
$paymentamount=$_POST['paymentamount'];
$currpay=$_POST['currpay'];
$paytype=$_POST['paytype'];
$eemnumber=$_POST['eemnumber'];
$country=$_POST['country']; 

$sql="INSERT INTO tbl_eem_data 
(ExpenseDate, Category, Vendor, ReceiptAmount, CurrRec, PaymentAmount, CurrPay, PayType, EEMNumber, Country)
VALUES 
$expensedate, 
$category, 
$vendor,
$receiptamount,
$currrec,
$paymentamount,
$currpay,
$paytype,
$eemnumber,
$country)";

if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }

mysqli_close($con);

header("location:index.php");

?>

有什么线索吗


谢谢

您的SQL中似乎缺少一个开括号
值之后)


修复它,希望它能工作:
值(…)
基本上,运行此测试:

HTML:


PHP:


然后运行以下命令:

HTML:


PHP:



看看您是否可以就此得出任何结论,并让我知道您的想法。

您正在根据从请求中收到的
$rows
数量生成表单字段

<form ...  <!- this line was missing in your code -->
$rows = $_POST['rows'];
while($n < $rows)
...
</form>
从分配给相关变量的已提交数组值中引出最后一个值

因此,您可以看到,只有最后一行被读取并推入数据库

相应地更改您的代码,它应该可以工作

请参阅


您需要更改表单结构和表单字段

        <?php
    $rows = $_POST['rows'];
    $n = 0;
    while($n < $rows)
             {
             $n++;
             ?>
             <tr>
                  <td><input type="date" name="expensedate[<?echo $n?>]"/><br /></td>
        <td><select name="category">
            <option value="AirFare">AirFare</option> />
            <option value="AutoRental">Auto Rental - Employee</option> />
            <option value="DailyAllowance">Daily Allowance Standard</option> />
            <option value="Gasoline">Gasoline - Auto Rental</option> />
            <option value="Lodging">Lodging (Hotel) - Room / Tax</option> />
            <option value="Meals">Meals / Entertain - HP only, Travel</option> />
            <option value="Misc">Miscellaneous</option> />
            <option value="Taxi">Taxi / Subway / Bus / Train</option> />
            <br/>
        </td>
        <td><input type="text" name="vendor[<?echo $n?>]"/><br /></td>
        <td><input type="text" name="receiptamount[<?echo $n?>]"/>
        </td>
        <td><select name="currrec">
            <option value="EUR">EUR</option> />
            <option value="SEK">SEK</option> />
            <option value="USD">USD</option> />
            </td>
        <td><input type="text" name="paymentamount[<?echo $n?>]"/>
        </td>
        <td><select name="currpay[<?echo $n?>]">
            <option value="EUR">EUR</option> />
            <option value="SEK">SEK</option> />
            <option value="USD">USD</option> />
        </td>
        <td><select name="paytype[<?echo $n?>]">
            <option value="cash">Cash</option> />
            <option value="cc">Credit Card</option> />
            <br/>
        </td>
        <td><select name="country[<?echo $n?>]">
            <option value="DE">Germany</option> />
            <option value="SE">Sweden</option> />
            <option value="US">USA</option> />
            <br/>
        </td>
    </tr>
    <?PHP
    }
    ?>
    <input type="hidden" name="rows" value="<?echo $n?>" />


他想让你看看他的代码有多好。阅读它,看看是否有一些错误。你应该有不同的名称也要小心,Sql注入…你应该对你的POST变量做一些处理“只得到最后一个”?最后一个什么??老实说,这段代码有太多错误,很难知道从哪里开始。老实说,没有任何改变。我得到了相同的输出谢谢你的答案,尽管我目前不明白。你说
$rows=$\u POST['rows']
bla-bla丢失了,但它在代码中…我遗漏了什么?while
循环中变量的命名约定是错误的。但在提交到其他服务器脚本文件时可以处理。请参阅我在回答中提到的URL,了解如何将参数值从请求对象存储到数组中。
<input type="text" name="key[]" value="1" />
<input type="text" name="key[]" value="2" />
<?
  print_r($_POST);
?>
<form ...  <!- this line was missing in your code -->
$rows = $_POST['rows'];
while($n < $rows)
...
</form>
$eemnumber=$_POST['expensedate']; /* this is wrong again */
$expensedate=$_POST['expensedate'];
$category=$_POST['category'];
$vendor=$_POST['vendor'];
        <?php
    $rows = $_POST['rows'];
    $n = 0;
    while($n < $rows)
             {
             $n++;
             ?>
             <tr>
                  <td><input type="date" name="expensedate[<?echo $n?>]"/><br /></td>
        <td><select name="category">
            <option value="AirFare">AirFare</option> />
            <option value="AutoRental">Auto Rental - Employee</option> />
            <option value="DailyAllowance">Daily Allowance Standard</option> />
            <option value="Gasoline">Gasoline - Auto Rental</option> />
            <option value="Lodging">Lodging (Hotel) - Room / Tax</option> />
            <option value="Meals">Meals / Entertain - HP only, Travel</option> />
            <option value="Misc">Miscellaneous</option> />
            <option value="Taxi">Taxi / Subway / Bus / Train</option> />
            <br/>
        </td>
        <td><input type="text" name="vendor[<?echo $n?>]"/><br /></td>
        <td><input type="text" name="receiptamount[<?echo $n?>]"/>
        </td>
        <td><select name="currrec">
            <option value="EUR">EUR</option> />
            <option value="SEK">SEK</option> />
            <option value="USD">USD</option> />
            </td>
        <td><input type="text" name="paymentamount[<?echo $n?>]"/>
        </td>
        <td><select name="currpay[<?echo $n?>]">
            <option value="EUR">EUR</option> />
            <option value="SEK">SEK</option> />
            <option value="USD">USD</option> />
        </td>
        <td><select name="paytype[<?echo $n?>]">
            <option value="cash">Cash</option> />
            <option value="cc">Credit Card</option> />
            <br/>
        </td>
        <td><select name="country[<?echo $n?>]">
            <option value="DE">Germany</option> />
            <option value="SE">Sweden</option> />
            <option value="US">USA</option> />
            <br/>
        </td>
    </tr>
    <?PHP
    }
    ?>
    <input type="hidden" name="rows" value="<?echo $n?>" />