Mysql表行添加不起作用

时间:2014-01-20 16:54:23

标签: php mysql

我有一个带有标准文本字段的表单。我已经创建了一个在http://phpmysqlmania.blogspot.com/p/dynamic-table-row-inserter.html的帮助下重复的表格。我把它发布到Mysql Ok。但它只发布1行的问题。添加表无处可去。

我简化了代码(很长) 这是我的代码:

JS

 <script type='text/javascript'>
$(document).ready(function() {
    var currentItem = 1;
    $('#addnew').click(function(){
        currentItem++;
        $('#items').val(currentItem);
        var strToAdd = '<tr><th colspan="100%"></th></tr><tr><tr><th>Type</th><th>Description</th><tr><td align="center"><select name="typeofunit'+currentItem+'" id="typeofunit'+currentItem+'" ><option value="DX">DX</option><option value="Chiller">Chiller</option></select></td><td align="center"><input name="unitdescription'+currentItem+'" id="unitdescription'+currentItem+'"></td></tr>';
        $('#data').append(strToAdd);

    });
});

的index.php

<form action="function.php" method="post">                                
<table>
<tr><th>Company Name</th><th>Street</th><th>City</th><th>State</th><th>Zip</th><th>Country</th>    </th></tr>
<td><input type="text" id="company" name="company" ></td>
<td><input  id="street" name="street" ></td>
</table>
<br>
<table>  

<table>
<tr><th>DX or Chiller</th><th>Equipment Description</th></tr>
<tr>
<td align="center">
    <select name="typeofunit1” id="typeofunit1” >
            <option value="DX">DX</option>
            <option value="Chiller">Chiller</option>
            </select>
</td>            
<td align="center">
        <input name="unitdescription1” id="unitdescription1”>
</td>
</tr>
</table>

                                <input type="button" id="addnew" name="addnew" value="Add  Another Unit" /> 
                                <input type="submit" value="Submit" /> 
</body>
</html>

function.php

<?php
$con = mysql_connect("localhost","ptgpfaso_root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("mydatabase", $con);
for( $i = 0 ; $i <= $count; $i++ )
{
$company = $_POST['company'];
$street = $_POST['street'];
$typeofunit = $_POST['typeofunit' . ($i+1)];
$unitdescription = $_POST['unitdescription' . ($i+1)];

$sql = "INSERT INTO equips (company,street,typeofunit,unitdescription,)
VALUES
('".$company."',
'".$street."',
'".$typeofunit."',     
'".$unitdescription."',

if (!mysql_query($sql,$con))
 {
die('Error: ' . mysql_error());
 }
echo " Submitted to MySQL ";
 }
 ?>

2 个答案:

答案 0 :(得分:0)

您在插入查询中添加了额外的,,例如unitdescription,'".$unitdescription."',,并且未正确关闭)查询。

   $sql = "INSERT INTO equips (company,street,typeofunit,unitdescription)
    VALUES
   ('".$company."',
   '".$street."',
   '".$typeofunit."',     
   '".$unitdescription."');

而不是

   $sql = "INSERT INTO equips (company,street,typeofunit,unitdescription,)
    VALUES
   ('".$company."',
   '".$street."',
   '".$typeofunit."',
 '".$unitdescription."',

另外,

 for( $i = 0 ; $i < $count; $i++ )
 ------------------^

而不是

for( $i = 0 ; $i <= $count; $i++ )

注意:使用mysqli_ *函数或PDO而不是使用mysql_ *函数(不建议使用)

答案 1 :(得分:0)

这样做:

$company = mysql_real_escape_string($_POST['company']);
$street = mysql_real_escape_string($_POST['street']);
$typeofunit = mysql_real_escape_string($_POST['typeofunit' . ($i+1)]); 
$unitdescription = mysql_real_escape_string($_POST['unitdescription' . ($i+1)]);

$sql = "INSERT INTO equips (company,street,typeofunit,unitdescription) 
        VALUES ('$company', '$street', '$typeofunit', '$unitdescription')";

这将修复你的代码。虽然不建议使用mysql_*函数,因为它们已被弃用。

你的错误:

错误1:您尚未关闭在INSERT之前打开的双引号 错误2:您没有使用VALUES末尾的结束括号 错误3:您在unitdescription查询中INSERT()后添加了一个额外的逗号。

另外,您是否已初始化$count变量?