php更新数据库有问题

wecizke3  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(933)

我可以请一些帮助与一个问题,我正在用php更新mysql数据库。
我很抱歉问一个以前被问过很多次的问题,这让我有点发疯,我也看过类似的问题,但答案似乎对我的问题没有帮助。
我使用两个文件,一个用于编辑内容的管理页面(admin.php)和一个用于在按下提交按钮时更新数据库的更新文件。
一切似乎都很正常,这些值被发布到update.php页面(我可以在回显它们时看到它们),但它不会更新数据库。
如果有人能给我指出正确的方向或告诉我我做错了什么,我将非常感激!
非常感谢:)
这是我的admin.php页面;

<head>
<?php

/*
Check to see if the page id has been set in the url. 
If it has, set it as the $pageid variable,
If it hasn't, set the $pageid variable to 1 (Home page)

* /

if (isset($_GET['pageid'])) {
$pageid = $_GET['pageid'];
}
else { 
$pageid = '1';
}

//Database connection variables
$servername = "localhost";
$username = "root";
$password = "";
$database = "cms";

// Create connection
$conn = new mysqli($servername, $username, $password, $database);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

//Get information from the database
$sql = "SELECT title, sub_title, tab1, tab2, tab3, content FROM data WHERE id='$pageid'";
$result = $conn ->query($sql);

if ($result->num_rows > 0)
{
while($row = $result->fetch_assoc()) {
$conn->close();

//Store database information in variables to display in the form
$title = $row["title"];
$sub_title = $row["sub_title"];
$tab1 = $row["tab1"];
$tab2 = $row["tab2"];
$tab3 = $row["tab3"];
$content = $row["content"];
}
} else {
echo "0 results";
}
?>
</head>
<body>

//basic navigation
<a href="admin.php?pageid=1">Page 1</a>  |  <a href="admin.php?pageid=2">Page 2</a>  |  <a href="admin.php?pageid=3">Page 3</a>

<form action="update.php" method="post" name="adminform">
<input type="hidden" name="pageid" value="<?php echo "$pageid";?>">
NAME:<br>
<input type="text" name="title" value="<?php echo $title;?>"><br><br>
EMAIL:<br>
<input type="text" name="sub_title" value="<?php echo $sub_title;?>"><br><br>
CONTENT:<br>
<input type="text" name="tab1" value="<?php echo $tab1;?>"><br><br>
CONTENT:<br>
<input type="text" name="tab2" value="<?php echo $tab2;?>"><br><br>
CONTENT:<br>
<input type="text" name="tab3" value="<?php echo $tab3;?>"><br><br>
CONTENT:<br>
<textarea rows="4" cols="50" name="content">
<?php echo $content;?>
</textarea>
<br><br>
<input type="submit">
</form>         

</body>

这是update.php页面;

<?php
/*Values passed from the admin form, to be used as update variables*/
if (isset($_POST['adminform'])) 
{  
$pageid = $_POST["pageid"];
$titleu = $_POST["title"];
$sub_titleu = $_POST["sub_title"];
$tab1u = $_POST["tab1"];
$tab2u = $_POST["tab2"];
$tab3u = $_POST["tab3"];
$contentu = $_POST["content"];      
}
?>

<?php
if(isset($_POST['adminform']))    
{      
// Create connection
$conn = new mysqli($servername, $username, $password, $database);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

//Update the database
$sql = "UPDATE data SET title='$titleu', sub_title='$sub_titleu', tab1='$tab1u', tab2='$tab2u', tab3='$tab3u', content='$contentu' WHERE id =='$pageid'";
$result = $conn ->query($sql);   
$conn->close();
}
?>
ryhaxcpt

ryhaxcpt1#

在where子句中使用的是==而不是=。另一方面,如果不希望易受sql注入攻击的攻击,请不要在没有验证和清理的情况下将用户值传递给查询。

$sql = "UPDATE data SET title='" . $conn->real_escape_string($titleu) . "', sub_title='" . $conn->real_escape_string($sub_titleu) . "', tab1='" . $conn->real_escape_string($tab1u) . "', tab2='" . $conn->real_escape_string($tab2u) . "', tab3='" . $conn->real_escape_string($tab3u) . "', content='" . $conn->real_escape_string($contentu) . "' WHERE id = " . (int)$pageid;

这将工作,但不是很优雅的解决方案。您可以使用prepared语句来传递正确的类型并防止sql注入。

5kgi1eie

5kgi1eie2#

检查数据库连接并测试是否连接到数据库。
更改您的查询如下

$sql = "UPDATE data SET title='".$titleu."', sub_title='".$sub_titleu."', tab1='".$tab1u."', tab2='".$tab2u."', tab3='".$tab3u."', content='".$contentu."' WHERE id ='$pageid'";

相关问题