所以我正在尝试为用户创建一个接口,他们可以通过php UX插入,删除和更新他们在sql db中的表。我已经掌握了基础知识,但是我试图保持一种动态的感觉。因此,让我们说低潮地说,一个新列被添加到他们试图从sql方面更新的特定表中。现在我已经知道它将显示添加的新列,但是如何在我的UPDATE sql查询中包含该新列。我已经为每一列指定了变量(即$ user,$ pass,$ email)但我的问题是如果他们添加了一个新列,我们如何设置代码以便它自动添加一个新变量并保持动态?我疯了,真的需要别人的帮助,因为它听起来很简单。 (是的,我很新)。
感谢您的帮助!请让我知道如何为任何人澄清这个问题。
以下是我的工作代码,用于更新已固定列的表格。请告知我需要添加或更改的内容。
<?php
$result = sqlsrv_query($con,"SELECT * FROM table");
$colresult = sqlsrv_query($con,"SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'table' AND TABLE_SCHEMA='schema'");
$serverName = xxx";
$connectionInfo = array("Database"=>"db", "UID"=>"user", "PWD"=>"pass", 'ReturnDatesAsStrings'=> true, "CharacterSet" => 'utf-8');
$con = sqlsrv_connect( $serverName, $connectionInfo);
$numfields = sqlsrv_num_fields($result);
if( $con ) {
echo "Connection established.<br />";
}
else{
echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));
}
if (isset($_POST['updatemarked']))
{
foreach($_POST["id"] AS $id){
**$user = $_POST["username"][$id];
$pass = $_POST["password"][$id];
$email = $_POST["email"][$id];**
if(!$user){
}
else{
$sqlupdate= sqlsrv_query($con,"UPDATE table SET username = '$user' WHERE id = $id");
}
if(!$pass){
//$pass = 'empty';//$row['password'];
}
else{
$sqlupdate= sqlsrv_query($con,"UPDATE table SET password = '$pass' WHERE id = $id");
}
if(!$email){
//$email = 'empty';//$row['email'];
}
else{
$sqlupdate= sqlsrv_query($con,"UPDATE table SET email = '$email' WHERE id = $id");
}
}
}
echo '
<form action="table.php" method="post">
<table table class="dynamicTable tableTools table table-striped table-bordered table- condensed table-white">';
echo '<tr>';
echo '<th width="50" align="center"><span style=color:black><strong>Select(s)</strong> </span></th>';
while($row = sqlsrv_fetch($colresult)){
$fieldname = sqlsrv_get_field($colresult, $i);
echo "<th>".$fieldname."</th>";
}
echo "</tr>";
while ($row = sqlsrv_fetch_array($result))
{
echo "<tr>";
echo '<td><input type="checkbox" name="id[]" value="'.$row['id'].'" /></td>';
echo "<td>".$row['id']."</td>";
echo '<td><input type="text" name="username['.$row['id'].']" placeholder="'.$row['username'].'"/></td>';
echo '<td><input type="text" name="password['.$row['id'].']" placeholder="'.$row['password'].'"/></td>';
echo '<td><input type="text" name="email['.$row['id'].']" placeholder="'.$row['email'].'"/></td>';
echo "</tr>";
}
echo'</table>';
echo'<br />';
echo '<div align="center">';
echo '<input type="submit" name="updatemarked" value="Update Selected" />';
echo '</div>';
echo '</form>';
?>
答案 0 :(得分:0)
您拥有在代码中实现动态感觉所需的所有成分。
您正在获取FIELD NAMES只使用这些FIELD NAMES来填充表单并进行验证,而不是使用单独的变量使用数组。一些事情:
UPDATE表SET FIELDNAME = $ _POST [FIELDNAME] WHERE id = $ id
我希望它有所帮助。