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