Php 如何使用循环结构更新或插入数据到表中
请在这一点上帮助我。我有两个数据库,一个跟踪用户和系统活动,另一个只跟踪用户活动。下面代码的目的是首先从第二个数据库检索所有表。这些表包含以下列: (id |日期|借方|贷方|编号|说明|账户类型|公司id) 其思想是检索所有表,只检索它们的| debit | credit |列。这些字段(|借方|贷方|)中已经有一些值。在检索之后,我应该能够更新,或者如果可能的话,对从数据库检索到的任何或所有表进行新的插入 下面是我写的代码。它可以检索,但无法进行插入或更新。请帮助我 同一页调用自己Php 如何使用循环结构更新或插入数据到表中,php,mysql,Php,Mysql,请在这一点上帮助我。我有两个数据库,一个跟踪用户和系统活动,另一个只跟踪用户活动。下面代码的目的是首先从第二个数据库检索所有表。这些表包含以下列: (id |日期|借方|贷方|编号|说明|账户类型|公司id) 其思想是检索所有表,只检索它们的| debit | credit |列。这些字段(|借方|贷方|)中已经有一些值。在检索之后,我应该能够更新,或者如果可能的话,对从数据库检索到的任何或所有表进行新的插入 下面是我写的代码。它可以检索,但无法进行插入或更新。请帮助我 同一页调用自己 //Co
//Connection and Extraction from DB
//DB Connection exists
//SQL Query
$sql = "show tables from $companyname";
$results = mysql_query($sql) or die(mysql_error());
$count = 1;
while($row = mysql_fetch_array($results))
{
$results2 = mysql_query("SELECT * FROM `$row[0]` LIMIT 1") or die('Error'.mysql_error());
while($row2 = mysql_fetch_array($results2))
{
$debit = $row2['debit'];
$credit = $row2['credit'];
echo "<tr><td>$count. </td><td width='30%'>".ucwords($row[0])."</td><td width='30%'>
<input type='text' name='debit' value='$debit' align='right'></td>
<td width='30%'><input type='text' name='credit' value='$credit' align='right'></td></tr>";
}
$count++;
}
//Insertion into DB
if(isset($_POST['submit'])) {
//SQL Query
$sql3 = "show tables from $companyname";
$results3 = mysql_query($sql3) or die(mysql_error());
$count = 1;
while($row3 = mysql_fetch_array($results3))
{
$results4 = mysql_query("SELECT * FROM `$row3[0]` LIMIT 1") or die('Error '.mysql_error());
$debit = $_POST['debit'];
$credit = $_POST['credit'];
while($row4 = mysql_fetch_array($results4))
{
$query = mysql_query("UPDATE `$row3[0]` SET `debit`= '$row4[debit]' , `credit`= '$row4[credit]' WHERE `id`=`$row4[id]`");
echo "UPDATE `$row3[0]` SET `debit`= '$row4[debit]' , `credit`= '$row4[credit]' WHERE `id`=`$row4[id]` <br>";
echo $num;
}
$count++;
}
}
//从数据库连接和提取
//数据库连接存在
//SQL查询
$sql=“显示来自$companyname的表”;
$results=mysql\u query($sql)或die(mysql\u error());
$count=1;
while($row=mysql\u fetch\u数组($results))
{
$results2=mysql\u查询(“从“$row[0]`LIMIT 1”中选择*)或die('Error'.mysql\u Error());
而($row2=mysql\u fetch\u数组($results2))
{
$debit=$row2['debit'];
$credit=$row2['credit'];
回显“$count.”.ucwords($row[0])
";
}
$count++;
}
//插入数据库
如果(isset($_POST['submit'])){
//SQL查询
$sql3=“显示来自$companyname的表”;
$results3=mysql\u query($sql3)或die(mysql\u error());
$count=1;
而($row3=mysql\u fetch\u数组($results3))
{
$results4=mysql\u查询(“从“$row3[0]`LIMIT 1”中选择*)或die('Error'.mysql\u Error());
$debit=$_POST['debit'];
$credit=$_POST['credit'];
而($row4=mysql\u fetch\u数组($results4))
{
$query=mysql\u query(“更新`$row3[0]`SET`debit`='$row4[debit],`credit`='$row4[credit]',其中`id`=`row4[id]`”);
echo“UPDATE`$row3[0]`SET`debit`='$row4[debit]',`credit`='$row4[credit]'其中`id`=`row4[id]`
”;
echo$num;
}
$count++;
}
}
CREATE TABLE company_transaktions (
company_name VARCHAR(50) NOT NULL,
id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
date DATE NOT NULL,
debit FLOAT NOT NULL,
credit FLOAT NOT NULL,
number MENIUMINT NOT NULL,
description TINYTEXT NOT NULL,
accounttype TINYTEXT NOT NULL,
company_id MEDIUMINT UNSIGNED NOT NULL,
PRIMARY KEY (company_name,id)
);
或者,如果公司id是我认为的,您应该使用主键(公司id,id)
$debit = $_POST['debit'];
$credit = $_POST['credit'];
但是您永远不会使用它们,它们总是最后一行的值,因为它们都有相同的名称
因此,您需要做的第一件事是重命名输入:
echo "<tr>\n";
echo "<td>$count. </td>\n";
echo "<td width='30%'>".ucwords($row[0])."</td>\n";
echo "<td width='30%'><input type='text' name='{$row[0]}[debit]' value='$debit' align='right'></td>\n";
echo "<td width='30%'><input type='text' name='{$row[0]}[credit]' value='$credit' align='right'>\n";
echo "</td>\n";
echo "</tr>";
然后在查询中使用它们
$result = mysql_query("UPDATE `$row3[0]` SET `debit`= '$debit' , `credit`= '$credit' WHERE `id`=`$row4[id]`");
为什么第二个模式(/数据库)中的所有数据不是第一个模式中的一个表呢?感谢您的快速响应。第一个模式包含一个保存特定活动记录的表。此表的PK在第二个架构中的所有表中都是FK。因此,您使用具有相同结构的多个表只是为了获得每个表的自动增量?谢谢。我将尝试并返回给您。假设检索到5个表,当按下“提交”键时,update语句只会看到最后一个表编辑它,并将所有其他表重置为0,无论是否输入了内容。
$result = mysql_query("UPDATE `$row3[0]` SET `debit`= '$debit' , `credit`= '$credit' WHERE `id`=`$row4[id]`");