0

我已经从stackoverflow上的另一个主题复制了代码,但它在这里不起作用。在互联网上搜索但找不到关于这个简单事情的任何信息,查询不起作用。

我想更新一个表。

形式:

<form method="post" action="klas_bewerken.php">
  <label>Old</label>  <input name="old" type="text" id="textfield" />
  <label>New</label>  <input name="new" type="text" id="textfield" />
<input type="submit" value="Change now" />
</form>

Klas_bewerken.php

<?php
$mysqli = new mysqli("localhost", "root", "root", "sms");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

$old = $_POST['old'];
$new = $_POST['new'];

echo "Old: $old";
echo "<br /> New: $new";

mysqli_query("UPDATE klas SET klas_id='$new' WHERE klas_id='$old'");

ECHO "<br /><br />Updated.";

mysql_close($con);

?>

代码对我来说看起来不错..有人看到错误吗?该表未更新。

谢谢

编辑

所以,更多解释:表 klas 只有 1 列:klas_id。有一排:A3D。我想把它改成A3C,所以我在旧的填写“A3D”,在新的填写“A3C”。

4

4 回答 4

2

你在这里混合了程序和 OO 风格。你不能混合这两者,代码应该看起来像这样(未经测试,但应该可以工作)

<?php
$mysqli = new mysqli("localhost", "root", "root", "sms");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

$old = $_POST['old'];
$new = $_POST['new'];

echo "Old: $old";
echo "<br /> New: $new";

$mysqli->query("UPDATE klas SET klas_id='$new' WHERE klas_id='$old'");

ECHO "<br /><br />Updated.";
$mysqli->close();

?>

如果您打算将其用于更广泛的用途,也请务必避开这些字符

于 2012-12-25T14:37:41.307 回答
0

在创建连接并获得 POST 变量后尝试以下操作:

$update = "UPDATE klas SET klas_id='".$new."' WHERE klas_id='".$old."'";
if ($run = $mysqli->query($update)) {
    echo 'Success';
    $run->free();
    $mysqli->close();
} else {
    echo 'Error Updating Content';
    exit();
}
于 2012-12-25T14:15:00.737 回答
0

当没有任何内容传递给时,您的代码无法自行更新POST,并且您的 sql 正在通过 POST 变量进行更新。尝试首先检查是否像下面这样提交。

并且您必须转义您的变量以防止 sql 注入。

当你关闭连接时,你也在做mysql,而不是它必须是mysqli

      <?php
$mysqli = new mysqli("localhost", "root", "root", "sms");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
if (isset($_POST['submit'])){
$old = mysqli_real_escape_string($_POST['old']);
$new = mysqli_real_escape_string($_POST['new']);

echo "Old: ". $old;
echo "<br /> New: " .$new;

$mysqli->query("UPDATE klas SET klas_id='".$new."' WHERE klas_id='".$old."'");
mysqli_close($mysqli); }
 ECHO "<br /><br />Updated.";
?> 
于 2012-12-25T14:34:14.583 回答
-2

尝试像这样运行您的查询

mysqli_query("UPDATE klas SET klas_id='".$new."' WHERE klas_id='".$old."'");

我相信是将“$old”更新为“$new”,但不存在“$old”值

于 2012-12-25T14:05:01.130 回答