大家好,我是通过get从URL获取值并将其传递给更新语句,当我把WHERE ID = 1时,它工作正常但是当我把ID = $ id时,代码工作但是没有更新,记录保持不变,可以帮助我解决这个问题
<?php
require 'db2.php';
$id = null;
if ( !empty($_GET['id'])) {
$id = $_REQUEST['id'];
$dbc = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) OR die ('Could not connect to MySQL: ' . mysqli_connect_error() );
$q = mysqli_query($dbc,"SELECT * FROM movie WHERE MovieID = '$id' ");
while($r=mysqli_fetch_array($q))
{
$title = $r["Title"];
$tag = $r["Tag"];
$year = $r["YEAR"];
$cast = $r["Cast"];
$comment = $r["Comment"];
$IDBM = $r["IMDB"];
}
}
if (!empty($_POST) ) {
if ( !empty($_GET['id'])) {
$id = $_REQUEST['id'];
// keep track post values
$cast = $_POST['cast'];
$title = $_POST['title'];
$comment =$_POST['comment'];
$year = $_POST['year'];
$tag = $_POST['tags'];
$IDBM = $_POST['idbm'];
$cast = htmlspecialchars($cast);
$title = htmlspecialchars($title);
$comment = htmlspecialchars($comment);
// validate input
$valid = true;
if (empty($cast)) {
$castError = 'Please enter Cast';
$valid = false;
}
if (empty($title)) {
$titleError = 'Please enter Title';
$valid = false;
}
if (empty($comment)) {
$commentError = 'Please enter Comment';
$valid = false;
}
if ($valid) {
$path = "uploads/";
$valid_formats = array("jpg", "png", "gif", "bmp");
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
{
$name = $_FILES['photoimg']['name'];
$size = $_FILES['photoimg']['size'];
if(strlen($name))
{
list($txt, $ext) = explode(".", $name);
if(in_array($ext,$valid_formats))
{
if($size<(1024*1024))
{
$actual_image_name = time().substr(str_replace(" ", "_", $txt), 5).".".$ext;
$tmp = $_FILES['photoimg']['tmp_name'];
if(move_uploaded_file($tmp, $path.$actual_image_name))
{
mysqli_query($dbc,"UPDATE movie SET Title='$title',Year = '$year',Cast='$cast',Cover='$actual_image_name',Tag='$tag',Comment='$comment',IMDB ='$IDBM' WHERE MovieID=".$id);
header ("Location: index.php");
}
else
echo "failed";
}
else
echo "Image file size max 1 MB";
}
else
echo "Invalid file format..";
}
else
echo "Please select image..!";
exit;
}
}
}
echo"error";
}
答案 0 :(得分:0)
听起来好像你的MovieID并没有被定义为一个整数,但是我们无法确定,因为你还没有告诉我们mysqli_query正在抛出的错误信息。
您需要检查mysqli_query创建的错误消息才能知道。见http://www.php.net/manual/en/mysqli.error.php
答案 1 :(得分:0)
试试这个
$id = $_GET['id']; // taking the value from URL
mysqli_query($dbc,"UPDATE movie SET Title='$title',Year = '$year',Cast='$cast',Cover='$actual_image_name',Tag='$tag',Comment='$comment',IMDB ='$IDBM' WHERE MovieID=".$id); // the sql statement of the query
并且最好使用intval()
来防止注射
$id = intval($_GET['id']); // taking the value from URL
答案 2 :(得分:0)
这个怎么样:
$ id = strip_tags(intval($ _ GET [&#39; id&#39;]));
mysqli_query($ dbc,&#34;更新`movie` SET`Title` =&#39; {$ title}&#39;,`Year` = &#39; {$ year}&#39;,`Cast` =&#39; {$ cast}&#39;, `Cover` =&#39; {$ actual_image_name}&#39;,`Tag` =&#39; {$ tag}&#39;,`Comment` =&#39; {$ comment}&#39; , `IMDB` =&#39; {$ IDBM}&#39;在哪里`MovieID` =&#39; {$ id}&#39;;&#34;);
验证$ id是否具有相同的值:
echo $ id;