【发布时间】:2017-11-03 01:54:09
【问题描述】:
PHP 和 SQL 的新手,所以我为电影创建了一个小型数据库,但遇到了一些我还没有解决的问题。
- 如何创建有效的编辑功能?为了能够编辑 数据库中的电影。
- 如何将单选按钮中的值转换为类别的 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]);
}
?>
【问题讨论】:
-
你能解释一下你的问题到底是什么吗?我可以看到您具有编辑功能,但您遇到的错误是您正在尝试插入但您必须调用更新,因为数据已经在数据库中。对于您的第二个问题,它也只是一个数字,将其转换为 sql 值是什么意思?
标签: php sql post mysqli radio-button