Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialangel angel
6,620 PointsSQL UPDATE?
IS this well written to update a database
```SQL UPDATE products SET categoryID = :category_id productCode = :code, productName = :name, listPrice = :price
WHERE productID = :product_id ```
3 Answers
Steven Parker
231,248 PointsYou need some punctuation.
It looks like you still need to put commas between the column settings.
I'm assuming the names beginning with colons represent values and are not other columns, but you didn't show how those get set.
angel angel
6,620 Points<?php
// Get the product data
$category_id = filter_input(INPUT_POST, 'category_id', FILTER_VALIDATE_INT);
$code = filter_input(INPUT_POST, 'code');
$name = filter_input(INPUT_POST, 'name');
$price = filter_input(INPUT_POST, 'price', FILTER_VALIDATE_FLOAT);
// Validate inputs
if ($category_id == null || $category_id == false ||
$code == null || $name == null || $price == null || $price == false) {
$error = "Invalid product data. Check all fields and try again.";
include('error.php');
} else {
require_once('database.php');
// Add the product to the database
$query = "UPDATE products
SET categoryID = :category_id,
productCode = :code,
productName = :name,
listPrice= :price
WHERE categoryID = :category_id , productCode = :code ,productName = :name,
listPrice = :price ";
$statement = $db->prepare($query);
$statement->bindValue(':category_id', $category_id);
$statement->bindValue(':code', $code);
$statement->bindValue(':name', $name);
$statement->bindValue(':price', $price);
$statement->execute();
$statement->closeCursor();
// Display the Product List page
include('index.php');
}
?> ```
angel angel
6,620 PointsThis is how everything look.
Steven Parker
231,248 PointsNow your WHERE
clause needs work.
It looks like you expanded your WHERE
clause, but unlike the SET
list, here you would not use commas. Instead you would combine your conditions with things like AND
or OR
.
But if you intended to use AND
, the entire expression would only update rows that already had the values you were setting, essentially doing nothing to the data! You may need to rethink what you are intending to do.