I have a a php page which updates a mySql database it works fine on my mac (localhost using mamp)
I made a check if its the connection but it appears to be that there is a connection
<?php require_once('connection.php'); ?>
<?php
$id = $_GET['id'];
$collumn = $_GET['collumn'];
$val = $_GET['val'];
// checking if there is a connection
if(!$connection){
echo "connectioned failed";
}
?>
<?php
$sqlUpdate = 'UPDATE plProducts.allPens SET '. "{$collumn}".' = '."'{$val}'".' WHERE allPens.prodId = '."'{$id}'".' LIMIT 1';
mysql_query($sqlUpdate);
// testing for errors
if ($sqlUpdate === false) {
// Checked this and echos NO errors.
echo "Query failed: " . mysql_error();
}
if (mysql_affected_rows() == 1) {
echo "updated";
} else {
echo "failed";
}?>
In the URL i pass in parameters and it looks like this: http://pathToSite.com/updateDB.php?id=17&collumn=prodid&val=4
Maybe this has to do with the hosting? isn’ t this simple PHP mySql database updating? what can be wrong here?
Let’s start with troubleshooting your exact problem. Your query is failing for some reason. We can find out what that problem is by checking what comes back from
mysql_query, and if it’s boolean false, askingmysql_errorwhat went wrong:You have other problems here. The largest is that your code suffers from an SQL Injection vulnerability. Let’s say your script is called
foo.php. If I request:then your SQL will come out looking like:
--is an SQL comment.I just managed to nuke all of the product IDs in your table.
The most effective way to stop SQL injection is to use prepared statements and placeholders. The "mysql" extension in PHP doesn’t support them, so you’d also need to switch to either the must better mysqli extension, or the PDO extension.
Let’s use a PDO prepared statement to make your query safe.