PHP更新没有';t更新
查询在mysql中运行,提交时没有捕获,但数据不会更新。有没有关于为什么这不起作用或者如何调试的建议PHP更新没有';t更新,php,Php,查询在mysql中运行,提交时没有捕获,但数据不会更新。有没有关于为什么这不起作用或者如何调试的建议 <?php if( $_SERVER['REQUEST_METHOD'] == "POST" ) { // var_dump($_POST["first_name"]); try { // this needs to be a lot more secure! // read PDO manual $id =
<?php
if( $_SERVER['REQUEST_METHOD'] == "POST" )
{
// var_dump($_POST["first_name"]);
try
{
// this needs to be a lot more secure!
// read PDO manual
$id = $_GET['id'];
// $description = $_POST["description"];
$first_name = $_POST["first_name"];
$last_name = $_POST["last_name"];
$description = $_POST["description"];
$sql = $db->prepare("UPDATE `exhibitors` SET first_name = '$first_name' WHERE id = '52'");
$update = $db->query($sql);
}
catch ( Exception $e )
{
echo " Data could not be updated from the database.";
}
}
此处未正确使用prepare()
(或query()
)prepare()
用于创建一个“prepared语句”,该语句与execute()
一起运行,query()
用于运行SQL查询字符串
不要将您的$\u POST
值连接到查询字符串中,这就是您接受SQL注入的方式。您忽略了使用准备好的语句的全部要点
这是针对MySQLi的:
$id = $_GET['id'];
// $description = $_POST["description"];
$first_name = $_POST["first_name"];
$last_name = $_POST["last_name"];
$description = $_POST["description"];
$sql = $db->prepare("UPDATE `exhibitors` SET first_name = ? WHERE id = ?");
$sql->bind_param('sd', $first_name, $id);
$sql->execute();
见文件:
如果您使用的是PDO,那么语法就有点不同
$id = $_GET['id'];
// $description = $_POST["description"];
$first_name = $_POST["first_name"];
$last_name = $_POST["last_name"];
$description = $_POST["description"];
$sql = $db->prepare("UPDATE `exhibitors` SET first_name = :first_name WHERE id = :id");
$sql->execute(array(
'first_name' => $first_name,
'id' => $id
));
对于准备好的语句,您应该使用以下内容
$sql = $db->prepare('UPDATE exhibitors SET first_name = :first_name WHERE id = :id');
$sql->execute(array('first_name' => $first_name,'id' => 52));
如果您只想使用查询语句(哪一个不应该,接受SQL注入)
您没有正确使用prepare()
。do echo(“更新参展商”
设置首名=“$first\u name”其中id='52'”`查看您使用的是MySQLi还是PDO的输出?您在哪里声明$db
?@Fred-ii-,因为您的第一个非建设性评论“调试您的代码”,我补充了这一点,很明显我刚刚开始学习PHP。事实上,我不是-我遵循了使用PDO的团队树屋教程-我对PHP非常陌生,我只希望得到建设性的评论。你可能会问我是否使用mysql连接,也许会解释为什么它不好,也许会链接到最佳实践?
$sql = $db->prepare('UPDATE exhibitors SET first_name = :first_name WHERE id = :id');
$sql->execute(array('first_name' => $first_name,'id' => 52));
$db->query("UPDATE exhibitors SET first_name = '$first_name' WHERE id = 52");