Php 将行和动态文本框插入mysql
我需要您的帮助,从一个表和动态文本字段中获取行,然后将其插入另一个表中。我想做的是从下表中获取一些特定的状态id,结合同一页上显示的文本框中的数据,然后插入到表中Php 将行和动态文本框插入mysql,php,mysql,insert,row,Php,Mysql,Insert,Row,我需要您的帮助,从一个表和动态文本字段中获取行,然后将其插入另一个表中。我想做的是从下表中获取一些特定的状态id,结合同一页上显示的文本框中的数据,然后插入到表中 +---------+--------------------------+ |state_id | state | senatorial | |--- -----|----------|------
+---------+--------------------------+
|state_id | state | senatorial |
|--- -----|----------|---------------|
| 1 | utah | A-North |
| 2 | utah | B-South |
+---------+----------+---------------+
<?php
$constituencys = $_POST['constituency'] ;
$state_id = $_POST['state_id'];
if(isses($_POST['constituency']))
{
$constituencys = $_POST['constituency'] ;
foreach($constituencys as $constituency) {
$state_id[$i]= $state_id[$i];
$query = mysql_query("
INSERT INTO `constituency` (
`constituency_id`,
`state_id`,
`constituency_name`
) VALUES (
NULL,
'".$state_id[$i]."',
'".$constituency."'
");
}
if(mysql_affected_rows()>0){
echo "Inserted Successfully";
}else{
echo "No Row Inserted";
echo mysql_error() ;
echo"<br>Error:".mysql_error();
echo"<br>Query:".$query;
} } ?>
我用来获取信息的HTML。“选区”是一个动态文本字段,多次出现,因此需要将其放入数组中
<input type='hidden' name="state_id[]" value="<?php echo $row['state_id'];?>" />
<input type='text' name='constituency[]' />
当我运行代码时,没有插入行
显示在屏幕上
请帮帮我。
非常感谢,谢谢
显示错误
先试试这段代码,用结果更新你的帖子
更新
看起来您可能有“脏”输入。请确保在插入mysql之前,通过使用对其进行清理。请尝试以下代码
<?php
$constituencys = $_POST['constituency'];
$state_id = $_POST['state_id'];
$i = 0;
while($i<count($constituencys)){
$constit = mysql_real_escape_string($constituencys[$i]);
$state = mysql_real_escape_string($state_id[$i]);
$query = "INSERT INTO `constituency` (
`constituency_id`, `state_id`, `constituency_name`
) VALUES (
NULL,
'$state',
'$constit')
";
mysql_query($query);
$i++;
}
if(mysql_affected_rows()>0){
echo "Inserted Successfully";
} else {
echo "No Row Inserted";
echo "<br><br>Error: " . mysql_error();
echo "<br><br>Query: " . $query;
}
?>
注意:在查询的末尾,缺少一个右括号。它已添加到第二个示例中。在继续测试之前,确保它在那里
<?php
$constituencys = $_POST['constituency'];
$state_id = $_POST['state_id'];
$query = "INSERT INTO `constituency` (`constituency_id`, `state_id`, `constituency_name`) VALUES";
for($i=0; $i<count($constituencys); $i++){
$constit = mysql_real_escape_string($constituencys[$i]);
$state = mysql_real_escape_string($state_id[$i]);
$query .= "(NULL, '$state', '$constit'), ";
}
$query = substr(trim($query), 0, -1); //trims then removes trailing comma
mysql_query($query);
if(mysql_affected_rows()>0){
echo "Inserted Successfully";
} else {
echo "No Row Inserted";
echo "<br><br>Error: " . mysql_error();
echo "<br><br>Query: " . $query;
}
?>
假设您的HTML输入被正确地设置为数组,这应该可以工作。它还整理您的代码,帮助您消除不必要的延迟。每毫秒计算一次如果这不起作用,请发布返回的错误并再次查询。mysql已被弃用,帮助有限。请使用mysqli或PDO,您将获得更多帮助。您对SQL注入攻击非常开放。在读懂并解决此问题之前,请停止处理此代码。打开错误报告或检查error.log文件,我确信某个地方存在mysql错误。如果没有插入echo行;,写下它的错误;ifisArray$_POST['substitution']{$substituencys=$_POST['substitution'];$state_id=$_POST['state_id'];}其他{$substituencys[0]=$_POST['substituency'];$state_id][0]=$_POST['state_id']}你喜欢这个吗谢谢。。。现在它正在插入,但只插入一行,而不是2或3行(视情况而定)。如果要插入多行,则仅插入HTML中的第一个值。我能做什么?谢谢。。。谢谢你的帮助。我这样解决了这个问题。请看更新的帖子。@user1378680别担心,很高兴我能帮上忙。
<?php
$constituencys = $_POST['constituency'];
$state_id = $_POST['state_id'];
$i = 0;
while($i<count($constituencys)){
$constituencys[$i]= $constituencys[$i];
$state_id[$i]= $state_id[$i];
$query = "INSERT INTO `constituency` (
`constituency_id`, `state_id`, `constituency_name`
) VALUES (
NULL,
'".$state_id[$i]."',
'".$constituencys[$i]."'
";
mysql_query($query);
$i++;
}
if(mysql_affected_rows()>0){
echo "Inserted Successfully";
} else {
echo "No Row Inserted";
echo "<br><br>Error: " . mysql_error();
echo "<br><br>Query: " . $query;
}
?>
<?php
$constituencys = $_POST['constituency'];
$state_id = $_POST['state_id'];
$i = 0;
while($i<count($constituencys)){
$constit = mysql_real_escape_string($constituencys[$i]);
$state = mysql_real_escape_string($state_id[$i]);
$query = "INSERT INTO `constituency` (
`constituency_id`, `state_id`, `constituency_name`
) VALUES (
NULL,
'$state',
'$constit')
";
mysql_query($query);
$i++;
}
if(mysql_affected_rows()>0){
echo "Inserted Successfully";
} else {
echo "No Row Inserted";
echo "<br><br>Error: " . mysql_error();
echo "<br><br>Query: " . $query;
}
?>
<?php
$constituencys = $_POST['constituency'];
$state_id = $_POST['state_id'];
$query = "INSERT INTO `constituency` (`constituency_id`, `state_id`, `constituency_name`) VALUES";
for($i=0; $i<count($constituencys); $i++){
$constit = mysql_real_escape_string($constituencys[$i]);
$state = mysql_real_escape_string($state_id[$i]);
$query .= "(NULL, '$state', '$constit'), ";
}
$query = substr(trim($query), 0, -1); //trims then removes trailing comma
mysql_query($query);
if(mysql_affected_rows()>0){
echo "Inserted Successfully";
} else {
echo "No Row Inserted";
echo "<br><br>Error: " . mysql_error();
echo "<br><br>Query: " . $query;
}
?>