Mysql表没有更新

时间:2012-12-25 14:00:33

标签: php mysqli

我已经在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 个答案:

答案 0 :(得分: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();

?>

如果你想要更广泛的使用,也一定要逃避这些角色

答案 1 :(得分: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();
}

答案 2 :(得分:0)

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

并且你必须转义ur变量以防止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.";
?> 

答案 3 :(得分:-2)

尝试以此身份运行您的查询

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

我认为将“$ old”更新为“$ new”但没有“$ old”值存在