有没有一种方法可以在不事先知道值的情况下用php更新mysql表?

ilmyapht  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(279)

我使用下面的代码获取mysql表的行和列标题,而不必事先知道它们并格式化表。我正在创建一个服务,允许用户生成表并将它们保存到mysql数据库中,因此我需要能够以这种方式检索数据。
我正在尝试更新和编辑他的表,使之成为现实。通常,这是在知道所有列值的情况下单独更新每个值的情况下完成的。
这是我获取值的代码

<?php
 try {
 $con= new PDO('mysql:host=localhost;dbname=xxx', "", "");
 $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 $query = "SELECT * FROM ``
 //first pass just gets the column names
 print "<table>";
 $result = $con->query($query);
 //return only the first row (we only need field names)
 $row = $result->fetch(PDO::FETCH_ASSOC);
 print " <tr>";
 foreach ($row as $field => $value){
 print " <th>$field</th>";
 } // end foreach
 print " </tr>";
 //second query gets the data
 $data = $con->query($query);
 $data->setFetchMode(PDO::FETCH_ASSOC);
 foreach($data as $row){
 print " <tr>";
 foreach ($row as $name=>$value){
 print " <td>$value</td>";
 } // end field loop
 print " </tr>";
 } // end record loop
 print "</table>";
 } catch(PDOException $e) {
 echo 'ERROR: ' . $e->getMessage();
 } // end try
?>

我正在尝试使用以下内容更新值:

foreach($_POST as $name=>$value)
{
    if($value != '')
{
    echo "$name: $value\n";
}
}

但是,行值根本不会更新。有没有什么方法可以在每次编辑值时扫描表并更新值?

vbkedwbf

vbkedwbf1#

您不需要执行两次查询。你可以用 columnCount() 以及 getColumnMeta() 方法获取所有列名。

$result = $con->query($query);
$colCount = $result->columnCount();
echo "<tr>";
for ($i = 0; $i < colCount; $i++) {
    $name = $result->getColumnMeta()["name"];
    echo "<th>$name</th>";
}
echo "</tr>";

相关问题