Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.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_Html_Mysql - Fatal编程技术网

PHP表单未更新

PHP表单未更新,php,html,mysql,Php,Html,Mysql,我完全陷入了一个问题。我正在练习从php插入MySQL数据,但我无法让它工作。说到php,我完全是新手。对于MySQL和HTML,我做了一些关于它的课程,所以你可以说我是一个初学者。这是示例的第三部分,第一个示例必须列出表中的所有动物,这部分是我开始工作的,第二部分是我必须使用命名参数来提取特定的动物类型,它也可以正常工作。现在我被最后一个插入数据的问题困住了。我有一个简单的表单,其中动物名称和动物类型作为文本框,当我单击submit时,更新的行必须在示例1中自动更新并显示在表中,但是当我单击s

我完全陷入了一个问题。我正在练习从php插入MySQL数据,但我无法让它工作。说到php,我完全是新手。对于MySQL和HTML,我做了一些关于它的课程,所以你可以说我是一个初学者。这是示例的第三部分,第一个示例必须列出表中的所有动物,这部分是我开始工作的,第二部分是我必须使用命名参数来提取特定的动物类型,它也可以正常工作。现在我被最后一个插入数据的问题困住了。我有一个简单的表单,其中动物名称和动物类型作为文本框,当我单击submit时,更新的行必须在示例1中自动更新并显示在表中,但是当我单击submit时,什么都没有发生,没有插入到数据库中,但是当我刷新页面或再次单击submit时,我只看到更新的数据。单击“刷新”或“提交”后,在两个文本字段中填写数据时,会将空白数据插入数据库

<?php

$db = 'mysql:host=localhost;dbname=animals';                    
$username = 'root';                                         
$password = '';

$animal_type   = $_POST[animal_type];
$animal_name   = $_POST[animal_name];

$query = "INSERT INTO animals
          (animal_type, animal_name)
          VALUES
          ('$animal_type', '$animal_name')";
$animal = $db->prepare($query);                                 
$animal->bindValue(':animal_id', $animal_id);
$animal->execute();
$animals = $animal->fetchAll();                                 
$animal->closeCursor();                                         
?>

<form action="example3.php" method="post">
Animal Name: <input type="text" name="animal_name"><br>
Animal Type: <input type="text" name="animal_type"><br>
<input type="submit" />
</form>

在哪里创建数据库?我唯一看到的是一个名为
$db
的字符串,我想您忘了创建这样的PDO对象
$db=new-PDO('mysql:host=localhost;dbname=animals',$username,“”)
否则,请尝试将语句准备为字符串


数组索引必须是这样的字符串
$\u POST[“animal\u type”]

要从超级全局变量中获取值,例如(
$\u POST
$\u REQUEST
$\u get
)必须将索引作为字符串传递

改变

$animal_type   = $_POST[animal_type];
$animal_name   = $_POST[animal_name];

并删除不必要的绑定值

$animal->bindValue(':animal_id', $animal_id); //remove this
还希望您已经创建了数据库连接并将其存储在
$db

插入查询也容易受到SQL注入的攻击。使用bind参数插入值

$query = "INSERT INTO animals
          (animal_type, animal_name)
          VALUES
          (:animal_type, :animal_name)";
$animal = $db->prepare($query);                                 
$animal->bindParam(':animal_type', $animal_type);
$animal->bindParam(':animal_name', $animal_name);
$animal->execute();

动物名称:
动物类型:

动物名称:
动物类型:
//更改此标记输入

有关php和mysql tutoral的更多信息,请参阅此链接

在插入查询中没有使用值时,为什么要绑定值?我可以补充一点,您应该使用
:value
作为插入值,而不是变量:|您能告诉我们上述代码的输出或错误是什么吗?请先决定插入或更新的内容?有问题的是,您说您想更新,但在代码中,您正在插入数据。@DhavalPurohit我正在从表单插入mysql数据库。然后,当我单击submit时,它必须更新我在示例2中创建的表,这几乎是正确的。就要投票表决了。检查插入语法。它应该是未设置的值,请添加解释,因为OP是一个初学者。我更正了,我没有太多注意所有内容:)insert的语法是insert INTO table(col,col)VALUES(val,val)为什么不设置?在我看来,它比价值更简单、更透明。Thx for-1:)插入到。。。。SET也可以在MySQL@Akintunde-read中使用。。。检查第二个插入语法。。。它不仅不符合ANSI标准,而且您可能无法在。。。为其他数据库设置,以便建议使用INSERT INTO。。。。价值观
$animal->bindValue(':animal_id', $animal_id); //remove this
$query = "INSERT INTO animals
          (animal_type, animal_name)
          VALUES
          (:animal_type, :animal_name)";
$animal = $db->prepare($query);                                 
$animal->bindParam(':animal_type', $animal_type);
$animal->bindParam(':animal_name', $animal_name);
$animal->execute();
<?php

$db = 'mysql:host=localhost;dbname=animals';                    
$username = 'root';                                         
$password = '';

$animal_type   = $_POST['animal_type'];
$animal_name   = $_POST['animal_name'];

$db = new PDO('mysql:host=localhost;dbname=animals', $username, "");

$query = "INSERT INTO animals
          SET animal_type = :animal_type,
          animal_name = :animal_name";
$animal = $db->prepare($query);                                 
$animal->bindParam(':animal_type', $animal_type, PDO::PARAM_STR);
$animal->bindParam(':animal_name', $animal_name, PDO::PARAM_STR);
$animal->execute();                             
?>

<form action="example3.php" method="post">
Animal Name: <input type="text" name="animal_name"><br>
Animal Type: <input type="text" name="animal_type"><br>
<input type="submit" />
</form>
<?php

if(isset($_POST['submit'])){ //check wheter form submit or not
    $db = 'mysql:host=localhost;dbname=animals';                    
    $username = 'root';                                         
    $password = '';

    $animal_type   = $_POST['animal_type'];
    $animal_name   = $_POST['animal_name'];

$stmt = $db->prepare("INSERT INTO animals
              (animal_type, animal_name) VALUES (?, ?)");

    $stmt->bind_param("ss", $animal_type, $animal_name);
    $stmt->execute();

}                                        
?>

<form  method="post">
Animal Name: <input type="text" name="animal_name"><br>
Animal Type: <input type="text" name="animal_type"><br>
<input type="submit" name="submit"/> // change this markup input
</form>