Php 如何使用循环结构更新或插入数据到表中

Php 如何使用循环结构更新或插入数据到表中,php,mysql,Php,Mysql,请在这一点上帮助我。我有两个数据库,一个跟踪用户和系统活动,另一个只跟踪用户活动。下面代码的目的是首先从第二个数据库检索所有表。这些表包含以下列: (id |日期|借方|贷方|编号|说明|账户类型|公司id) 其思想是检索所有表,只检索它们的| debit | credit |列。这些字段(|借方|贷方|)中已经有一些值。在检索之后,我应该能够更新,或者如果可能的话,对从数据库检索到的任何或所有表进行新的插入 下面是我写的代码。它可以检索,但无法进行插入或更新。请帮助我 同一页调用自己 //Co

请在这一点上帮助我。我有两个数据库,一个跟踪用户和系统活动,另一个只跟踪用户活动。下面代码的目的是首先从第二个数据库检索所有表。这些表包含以下列:

(id |日期|借方|贷方|编号|说明|账户类型|公司id)

其思想是检索所有表,只检索它们的| debit | credit |列。这些字段(|借方|贷方|)中已经有一些值。在检索之后,我应该能够更新,或者如果可能的话,对从数据库检索到的任何或所有表进行新的插入

下面是我写的代码。它可以检索,但无法进行插入或更新。请帮助我

同一页调用自己

//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)

  • php问题

    将2个postdata存储在2个变量中

    $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]`");