Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php未更新_Php_Mysql - Fatal编程技术网

Php未更新

Php未更新,php,mysql,Php,Mysql,我是编程新手,但我相信有一个简单的解决方案: 当我尝试使用这段代码时,我没有收到任何错误,但是数据库没有更新。 我连接到数据库没有问题。我也尝试过引用的变体。更新代码在phpmyadmin中工作,但不在页面上。 我试图在提交时更新表格中输入的信息 <?php if(isset($_POST['submit'])){ $dbhost = 'localhost'; $dbuser = 'dbuser'; $dbpass = 'dbpass'; $

我是编程新手,但我相信有一个简单的解决方案: 当我尝试使用这段代码时,我没有收到任何错误,但是数据库没有更新。 我连接到数据库没有问题。我也尝试过引用的变体。更新代码在phpmyadmin中工作,但不在页面上。 我试图在提交时更新表格中输入的信息

    <?php
    if(isset($_POST['submit'])){
    $dbhost = 'localhost';
    $dbuser = 'dbuser';
    $dbpass = 'dbpass';
    $conn = mysql_connect($dbhost, $dbuser, $dbpass);

      $mon_am = $_POST['mon_am'];
       $sql = "UPDATE `mydatabase` 
       SET `mon_am` = $mon_am
      WHERE `id` = 1";
           } 
    mysql_close($conn);
?>

<!DOCTYPE html>
    <html>
    <head>
        <title>title</title>
    </head>
    <body>
        <form method="POST" action="mon_am.php">
            <input type="text" Name="mon_am">
            <input type="submit" name="submit">
    </form>
    </body>
    </html>

标题

连接后必须选择数据库。 使用mysql\u查询执行sql

<?php
    ...
    $conn = mysql_connect($dbhost, $dbuser, $dbpass);
    $selectDb = mysql_select_db("yourDatabaseName");
    $mon_am = $_POST['mon_am'];
    $sql = "UPDATE `yourTableName` SET `mon_am` = $mon_am WHERE `id` = 1";
    $query = mysql_query($sql);
    mysql_close($conn);
?>

这应该可以做到。部分功劳归于@Nigel Ren,他指出您忘记执行查询,应该使用mysqli或PDO

还要注意使用prepared语句和参数绑定,这会阻止最终用户发布一些讨厌的sql,这些sql将通过$mon_am变量注入查询中

<?php

if(isset($_POST['submit']))
{

  $dbhost = 'localhost';
  $dbuser = 'dbuser';
  $dbpass = 'dbpass';
  $dbname = 'YOURDBNAME'; //Change YOURDBNAME with the actual name of your database

  $conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname);

  $sql = 'UPDATE mydatabase SET mon_am = ? WHERE id = 1;' //mydatabase must be a table, not the actual database name !!
  $stmt = $conn->prepare($sql);
  $stmt->bind_param('s', $_POST['mon_am']); //First parameter defines the data type
  $stmt->execute();

  echo $stmt->affected_rows; // This is only to show if the data was updated. You can delete it once your code is working

  $stmt->close();
  $conn->close();
}

?>

<!DOCTYPE html>
<html>
<head>
    <title>title</title>
</head>
<body>
    <form method="POST" action="mon_am.php">
        <input type="text" Name="mon_am">
        <input type="submit" name="submit">
</form>
</body>
</html>

标题

我的数据库是数据库还是表?因为如果它是数据库,则不能直接更新数据库。UPDATE语句仅适用于表。您不执行查询()。您应该尝试更新mysqli_uu或PDO,因为mysqli_u在较新版本的PHP中不受支持。
mysql_uclose()
在您的
if
之外调用,因此即使连接未打开,也可能被调用。1。不要使用不推荐使用且不安全的
mysql.*
-函数。自PHP5.5(2013年)起,它们就被弃用,并在PHP7(2015年)中被完全删除。改用MySQLi或PDO。2.如果您使用上面提到的MySQLi或PDO,您就可以使用它。如果
mon\u am
是一个字符串,您需要将内容包含在引号中(
`mon\u am`='$mon\u am'
),尽管如前所述,查看准备好的语句,因为这样可以避免许多其他潜在问题。