【发布时间】:2017-01-13 17:46:20
【问题描述】:
我正在尝试使用特定条件调用和更新数据库中的表行。目前我让表格在文本框中加载数据并自动分配所有文本框的名称,以便我以后可以使用它们进行更新。
要显示的代码
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
mysqli_set_charset($conn,"utf8");
$check=$_POST["scenario1"];
$qwert="SELECT * FROM izprashtane WHERE Сценарий='$check'";
$query=mysqli_query($conn,$qwert);
$sql = "SHOW COLUMNS FROM izprashtane";
$result = mysqli_query($conn,$sql);
echo "<table width=650 border=1>\n";
$counter=0;
while ($get_info = mysqli_fetch_row($query)){
echo "<tr>\n";
while($row = mysqli_fetch_array($result)){
echo "<td>" . $row['Field'] . "</td>";
}
echo "</tr>\n";
echo "<tr>\n";
$counter=0;
foreach ($get_info as $field){
$counter += 1;
echo "\t<td><input type='text' name='$counter' value='$field'></td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
$conn->close();
?>
<html>
<body>
<form action="datacizprashtane.php" method="POST">
<input type="submit" value="Промяна" >
</form>
</body>
</html>
这会将表格行加载到带有可编辑文本框的表格中,并根据我的需要分配从 0 到到的名称。然后我得到了更新表格的代码。这只是实验性的,所以我只有 2 个文本框,一旦开始,我会添加其余的。
要更新的代码
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "UPDATE izprashtane SET НаселеноМясто='$_POST[2]',Тримесичие='$_POST[3]' WHERE Сценарий='$_POST[6]'";
if (mysqli_query($conn, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($conn);
}
$conn->close();
此时它给了我:
错误更新记录:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '�аселеноМясто='',Тримес' 附近使用正确的语法。
我曾尝试使用'".$_POST[3]."',但它甚至没有给我错误。关于我做错了什么的任何想法?
【问题讨论】:
-
在运行查询之前设置字符集
$conn ->set_charset("utf8") -
$_POST是关联数组,而不是数值数组,因此您无法像$_POST[3]、$_POST[6]等那样访问它们。 -
好吧,Charset 允许页面让我成功更新记录,但实际上没有更新......即使我的文档默认编码是 UTF8
-
@RajdeepPaul 他为输入名称动态分配数值,检查 $counter 变量在第一个代码中的作用。
-
当你在这的时候,我也会介绍一些输入过滤。例如 $check=$_POST["scenario1"],替换为 $check = filter_input(INPUT_POST, 'scenario1', FILTER_SANITIZE_STRING)
标签: php mysqli html-table