Php 更新数据库表的最快方法

Php 更新数据库表的最快方法,php,mysql,Php,Mysql,我有一个网站,人们可以在其中创建一个长度未知的表格,其中包含两列,word_1和word_2,并将该表格存储在数据库中。当然,通过遍历行将这些值插入数据库是非常简单的 现在有人决定更新一些值,他进入编辑页面,在那里他找到表中-字段中的所有行。当他编辑内容、添加另一行或删除一行时,更新这些值的最快方法是什么 例如,这是创建后的表: [word_1 ] [word_2 ] 1. [foo ] [bar ] 2.

我有一个网站,人们可以在其中创建一个长度未知的表格,其中包含两列,
word_1
word_2
,并将该表格存储在数据库中。当然,通过遍历行将这些值插入数据库是非常简单的

现在有人决定更新一些值,他进入编辑页面,在那里他找到表中
-字段中的所有行。当他编辑内容、添加另一行或删除一行时,更新这些值的最快方法是什么

例如,这是创建后的表:

     [word_1        ]  [word_2       ]

1.   [foo           ]  [bar          ]
2.   [something     ]  [more         ]
3.   [another       ]  [row          ]
...
600. [another_value ]  [blabla       ]
601. [last          ]  [row          ]
然后有人决定编辑它:

1.   [foo           ]  [bar          ]
2.   [changed_val   ]  [more         ]
...
234. [another_change]  [changed_value]
...
600. deleted
601. [last          ]  [row          ]
602. [new_row       ]  [new_value    ]
我认为我的HTML代码如下所示:

<table>
    <tr>
        <td>
            <input type="hidden" name="row[0][id]" value="id-2" />
            <input type="text" name="row[0][word_1]" value="value_1" />
        </td>
        <td>
            <input type="text" name="row[0][word_2]" value="value_2" />
        </td>
        <td>
            <img src="img.gif" onclick="delete_row()" />
        </td>
    </tr>
     <tr>
        <td>
            <input type="hidden" name="row[1][id]" value="id-5" />
            <input type="text" name="row[1][word_1]" value="value_1" />
        </td>
        <td>
            <input type="text" name="row[1][word_2]" value="value_2" />
        </td>
        <td>
            <img src="img.gif" onclick="delete_row()" />
        </td>
    </tr>
</table>

有没有更好的方法来更新表,而不是遍历每一行并使用查询检查当前行是否已编辑?查看行是否被删除的最佳方法是什么


我知道这些数据很容易用XML存储,但我更喜欢数据库,这样我就可以将来自其他表和用户等的数据链接在一起。

假设表很大,可能最快的方法是通过一个查询将整个数据拉入内存,循环比较行,并根据需要进行更新


最好是做一些动态的事情,在使用AJAX调用编辑行的同时,将查询动态地发送到db。

假设表很大,可能最快的方法是使用一个查询将整个内容拉到内存中,循环比较行,并根据需要进行更新

最好是做一些动态的事情,当使用AJAX调用编辑行时,查询会被动态发送到db。

您可以使用delete_row()和该单词的id,每次运行delete_row时,它都会将数据保存在js变量中,最后当用户单击update按钮时,您知道要更新哪些行

var deletedRows = new Array();
var numberOfRowsDeleted = 0;
function delete_row(row_id)
{
    deletedRows[numberOfRowsDeleted] = row_id;
    numberOfRowsDeleted++;
}
您可以将delete_row()与该单词的id一起使用,每次运行delete_row时,它都会将数据保存在一个js变量中,最后当用户单击“更新”按钮时,您就知道要更新哪些行了

var deletedRows = new Array();
var numberOfRowsDeleted = 0;
function delete_row(row_id)
{
    deletedRows[numberOfRowsDeleted] = row_id;
    numberOfRowsDeleted++;
}

嗨,Peter,在使用AJAX编辑时进行更新是个好主意,我没想过!将整个表放入内存意味着将其放入$\u会话?您可以将其放入$\u会话,但任何变量都可以。一旦数据存储在本地内存中,您就可以比执行大量单独查询更快地处理数据。您需要对性能进行试验,以确定哪条路会走在前面。类似于:$result=mysql\u查询(“select*fromtable”,$conn);虽然($row=mysql\u fetch\u assoc($result)){$data[]=$row;}嗨,Peter,在使用AJAX编辑时进行更新是一个好主意,我没有想到这一点!将整个表放入内存意味着将其放入$\u会话?您可以将其放入$\u会话,但任何变量都可以。一旦数据存储在本地内存中,您就可以比执行大量单独查询更快地处理数据。您需要对性能进行试验,以确定哪条路会走在前面。类似于:$result=mysql\u查询(“select*fromtable”,$conn);虽然($row=mysql\u fetch\u assoc($result)){$data[]=$row;}如果这是人们在网页上编辑的内容,那么我们在这里讨论的数据量是多少?最快的方法可能会增加更多的复杂性。如果这是人们在网页上编辑的内容,那么我们在这里讨论的数据量是多少?最快的方法可能会增加更多的复杂性。