학교에서 나는 동물을 판매하는 웹 사이트를 만들고 있습니다. 소유자가 사이트에서 동물을 추가, 편집 및 삭제할 수있는 관리자 페이지가 있어야합니다. 우리는 동물을 추가 할 수있게 만들었지 만 기존의 동물을 편집 할 수는 없습니다. 나는 또한 PHP에서 실제로 경험이 없다. 문이 실행되고 있는지 확인하기 위해 몇 가지 검사를 추가했습니다. 양식을 채우고 제출을 클릭하면 'donedone'이라고 표시되어 작동한다는 것을 의미하지만 표는 동일하게 유지됩니다. 누군가 내가 겪고있는 문제가 무엇인지 밝힐 수 있습니까? 내가 SO를 통해 뭔가를 물어 본 것은 이번이 처음입니다.(PHP) mysql 데이터베이스에서 오류는 발생하지 않지만 편집하지 않습니다.
edit1 : "animal_id = ': animal_id'대신"no animal no. 33 대신에 폼에 입력 한 값 대신 ': class'및 ': price'등의 값을 모두 바꿉니다. 따라서 양식 값을 'insert into'stmt에 바인딩 할 때 문제가 발생해야합니다.
이
데이터베이스 연결<?php
$server = 'localhost';
username = 'username';
$password = '*********';
$database = 'databasename';
$conn = new PDO("mysql:host=$server;dbname=$database;", $username, $password);
?>
이며, 이는 edit_animal 파일입니다
<?php
session_start();
if(isset($_SESSION['user'])){
header("Location: /");
}
ini_set('display_errors', '0');
error_reporting(E_ALL | E_STRICT);
require 'database.php';
$message = '';
if(!empty($_POST['animal_name']) && !empty($_POST['official_name']) && !empty($_POST['average_lifespan']) && !empty($_POST['length']) && !empty($_POST['class']) && !empty($_POST['housing']) && !empty($_POST['animal_price']) && !empty($_POST['diet']) && !empty($_POST['description'])):
$sql = "UPDATE animal_test SET animal_name =':animal_name', animal_price = ':animal_price', official_name =':official_name', average_lifespan = ':average_lifespan' , length =':length' , class =':class', housing = ':housing', description=':description', diet =':diet' WHERE animal_id =':animal_id'";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':animal_id', $_POST['animal_id']);
$stmt->bindParam(':animal_name', $_POST['animal_name']);
$stmt->bindParam(':official_name', $_POST['official_name']);
$stmt->bindParam(':average_lifespan', $_POST['average_lifespan']);
$stmt->bindParam(':length', $_POST['length']);
$stmt->bindParam(':class', $_POST['class']);
$stmt->bindParam(':housing', $_POST['housing']);
$stmt->bindParam(':animal_price', $_POST['animal_price']);
$stmt->bindParam(':description', $_POST['description']);
$stmt->bindParam(':diet', $_POST['diet']);
$result = $stmt->execute();
if (!$stmt) {
echo "Jammer";
}
if($stmt){
echo "done";
}
if ($result) {
echo "done";
}
else{
$message = 'Sorry there must have been an issue with editing your animale';
}
endif;
?>
<!DOCTYPE html>
<html>
<head>
<title>Admin - Exotic Animal Shop</title>
<link rel="stylesheet" type="text/css" href="admin_page.css">
</head>
<body>
<h2>Add a product</h2>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>"method="POST">
<div class=add_product_div>
<div id=animal_name_div>
<p>Animal name</p>
<input id=animal_name type="text" placeholder="Animal name" name="animal_name">
</div>
<div id=animal_id_div>
<p>Animal ID</p>
<input id=animal_id type="number" placeholder="Animal ID" name="animal_id" min="0">
</div>
<div id=price_div>
<p>Price</p>
<input id=animal_price type="number" placeholder="Price" name="animal_price" min="0">
</div>
<div id=official_name_div>
<p>Official name</p>
<input id=official_name type="text" placeholder="Official name" name="official_name">
</div>
<div id=current_age_div>
<p>Average lifespan</p>
<input id=average_lifespan type="text" placeholder="Average lifespan" name="average_lifespan">
</div>
</div>
<div class=add_product_div>
<div id=length_div>
<p>Max length</p>
<input id=length type="text" placeholder="Max length" name="length">
</div>
<div id=class_div>
<p>Class</p>
<input id=class type="text" placeholder="Class" name="class">
</div>
<div id=housing_div>
<p>Housing</p>
<input id=housing type="text" placeholder="Housing" name="housing">
</div>
<div id=animal_diet>
<p>Diet</p>
<input id=diet type="text" placeholder="Diet" name="diet">
</div>
</div>
<div class=add_product_div>
<p>Description</p>
<textarea placeholder="Description" id="description" name="description" rows="20" cols="40"></textarea>
</div>
<div id=submit_div>
<input id=submit type="submit" value="Submit">
</div>
</form>
<form action="upload.php" method="post" enctype="multipart/form-data">
<p>Select image to upload</p>
<input type="file" name="userfile" id="userfile">
<input type="submit" value="Upload Image" name="submit">
</form>
</body>
PDO는 기본적으로 예외를 발생시키지 않으므로 명시 적으로 구성해야합니다. –
확실하지는 않지만'WHERE animal_id = ': animal_id''를 따옴표를 제거하면'WHERE animal_id = : animal_id'가됩니다 – marmeladze
쿼리 ('$ sql')에 작은 따옴표를 추가 할 필요가 없습니다. 때때로 너무 많은 공간을 추가 한 것처럼 보입니다. 또한'value = : myvalue'로 준비하면 배열을 사용하여 실행할 수 있습니다. 이 어드바이스는 코드를 깨끗이하고 밝게 할 것이다. – AymDev