0
新的PHP和SQL,所以我创建了一个小的电影数据库,我有一些问题,我还没有能够解决。PHP控制小型数据库 - 添加和编辑(查询)
- 如何创建工作编辑功能?为了能够编辑数据库中的电影 。
- 如何将单选按钮的值转换为类别的SQL值?
希望这不是太多的代码。
<?php
require_once 'login.php';
// Connection to databas
$conn = new mysqli($host, $username, $password, $dbname);
if ($conn->connect_error) die($conn->connect_error);
{
echo "Failed to connect to MySQL: (" . $conn->connect_error . ") " . $conn->connect_error;
}
// Delete movie from databas
if (isset($_POST['delete']) && isset($_POST['id']))
{
$id = get_post($conn, 'id');
$query = "DELETE FROM Movies WHERE id='$id'";
$result = $conn->query($query);
if (!$result) echo "Delete failed: $query<br>" .
$conn->error . "<br><br>";
}
// Edit movie
$title = filter_input(INPUT_POST, "title", FILTER_SANITIZE_SPECIAL_CHARS);
$director = filter_input(INPUT_POST, "director", FILTER_SANITIZE_SPECIAL_CHARS);
$year = filter_input(INPUT_POST, "year", FILTER_SANITIZE_NUMBER_INT);
$category = filter_input(INPUT_POST, "category", FILTER_SANITIZE_SPECIAL_CHARS);
$id = filter_input(INPUT_POST, "id", FILTER_SANITIZE_NUMBER_INT);
if (isset($_POST['title']) &&
isset($_POST['director']) &&
isset($_POST['year']) &&
isset($_POST['radio']) &&
isset($_POST['id']))
{
$title = get_post($conn, 'title');
$director = get_post($conn, 'director');
$year = get_post($conn, 'year');
$category = get_post($conn, 'category');
$id = get_post($conn, 'id');
$query = "INSERT INTO Movies VALUES" .
"('$title', '$director', '$year', '$category', '$id')";
$result = $conn->query($query);
if (!$result) echo "INSERT failed: $query<br>" .
$conn->error . "<br><br>";
}
// Form for adding movies and radiobuttons for categories
echo <<<_END
<form action="sqltest.php" method="post"><pre>
Title: <input type="text" name="title">
Director: <input type="text" name="director">
Year: <input type="text" name="year">
Category:
<input type="radio" name="query" value="1"> Action
<input type="radio" name="query" value="2"> Animated
<input type="radio" name="query" value="3"> Drama
<input type="radio" name="query" value="4"> Fantasy
<input type="radio" name="query" value="5"> Sci-Fi
<input type="radio" name="query" value="6"> Thriller
<input type="submit" value="Add Movie">
</pre></form>
_END;
// List all movies from databas
$query = "SELECT * FROM movies";
$result = $conn->query($query);
if (!$result) die ("Database access failed: " . $conn->error);
$rows = $result->num_rows;
for ($j = 0 ; $j < $rows ; ++$j)
{
$result->data_seek($j);
$row = $result->fetch_array(MYSQLI_NUM);
echo <<<_END
<pre>
Title $row[0]
Director $row[1]
Year $row[2]
Category $row[3]
</pre>
<form action="sqltest.php" method="post">
<input type="hidden" name="edit" value="yes">
<input type="hidden" name="id" value="$row[4]">
<input type="submit" value="Edit movie"></form>
<form action="sqltest.php" method="post">
<input type="hidden" name="delete" value="yes">
<input type="hidden" name="id" value="$row[4]">
<input type="submit" value="Delete movie"></form>
_END;
}
$result->close();
$conn->close();
function get_post($conn, $var)
{
return $conn->real_escape_string($_POST[$var]);
}
?>
你能解释一下多一点的MySQL连接(本地主机,testdb的,root,密码)究竟是什么问题了吗?我可以看到你有编辑功能,但是你的错误是你试图插入,但你必须调用更新,因为数据已经在数据库中。而对于你的第二个问题,它也只是一个数字,你的意思是将其转换为SQL值? – Moein