0

So I am trying to update a database field using a html form and some PHP code, but I cannot get it to work, it throws no errors but does not update the field?, Im not sure if its because im also echoing that field on the webpage? All it seems to do is print the fail message.

HTML:

<html>
    <form method="post" name="update" action="updateform.php" />

    Description:

    <input type="text"  name="description" />

            <input type="submit" name="Submit" Value="update" />
    </form>

    </html>

PHP:

<?php 
mysql_connect("localhost", "root", "*****") or die("Connection Failed"); 
mysql_select_db("Days")or die("Connection Failed"); 
$description = $_POST['description']; 
$query = "UPDATE test SET description = '$description' ";
if(mysql_query($query)){ echo "updated";} else{ echo "fail";} ?> 

My echo (working):

             <?php
include("include/session.php");
//connect to the server
$connect = mysql_connect("localhost","root","*****");

//connect to the database
mysql_select_db("days");

//query the database
$query = mysql_query("SELECT * FROM hobby WHERE id = '1' ");

//ferch the results / convert results into an array

    WHILE($rows = mysql_fetch_array($query)):

        $description = $rows['description'];

    echo "<div style ='font:15px/21px Arial,tahoma,sans-serif;color:#cf5c3f     </h>'>$description";
    endwhile;






?>
user3429806
  • 21
  • 1
  • 2
  • It probably does throw an error. You just aren't looking for it. Use mysql_error() to see your sql error. FYI, you are wide open to [SQL injections](http://stackoverflow.com/q/60174) – John Conde Mar 28 '14 at 14:30
  • Don't you need a `WHERE` for your `UPDATE` statement ? – Shankar Narayana Damodaran Mar 28 '14 at 14:31
  • try: `$res = mysql_query($query) or die("error: ".mysql_error());` – Max Langerak Mar 28 '14 at 14:33
  • This is a very unsafe way to execute a SQL query, use PDO (http://nl1.php.net/manual/en/class.pdo.php) instead. If your update query would work, it would update **all** rows instead of just one. Use a `WHERE` statement to update just the rows you want to select. – user3360311 Mar 28 '14 at 14:34
  • it seems i have something wrong with my code? error: Table 'days.days' doesn't exist not sure why its repeating its self with a . in between. – user3429806 Mar 28 '14 at 14:35

2 Answers2

1
UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value

Update query sample but i don't get your sql ..you missing your where clause

Ferrakkem Bhuiyan
  • 2,741
  • 2
  • 22
  • 38
  • if where is missing it will update all rows , isn't it ? – Dimag Kharab Mar 28 '14 at 14:39
  • 1
    A where clause is required always, if you want to update all rows you can use `WHERE 1=1` – Matt Mar 28 '14 at 14:40
  • Ive edited my code it seems I was missing a WHERE statment, however im still getting error: Table 'days.days' doesn't exist, im not sure why its repeating days and adding a . – user3429806 Mar 28 '14 at 14:40
  • yup , but still in case if 'where' is missing , does it throws any errors ?? – Dimag Kharab Mar 28 '14 at 14:41
  • @Matt Since when is a `WHERE` statement required when updating all rows? (I'm interested, not sarcastic.) – user3360311 Mar 28 '14 at 14:42
  • AS I knew , "The **WHERE** clause determines which rows will be updated. It is an **optional** element of the UPDATE statement" – Dimag Kharab Mar 28 '14 at 14:47
  • user3360311, now I look it up that may have been bad information, perhaps it's only with safe-updates enabled in MySQL workbench, my apologies! – Matt Mar 28 '14 at 14:47
0

You need to use WHERE Condition whenever you try to update something to table.

Here's my code :

test.html

<html>
<form method="post" action="updateform.php" />

Name : <input type="text"  name="name" /> </br>

<input type="submit" name="Submit" value="update" />

</form>
</html>

updateform.php

<?php 
$name = $_POST['name'];
$connection = mysqli_connect("localhost", "root", "Enter Passwd Here","Enter db_name here"); 
if(mysqli_connect_errno())
{
    echo "failed to connect " . mysqli_connect_error();
}

if(isset($_POST['Submit'])) 
{
    $query = "UPDATE `test_table` SET `name` = '$name' WHERE `cost` = 500"; 
    $result = mysqli_query($connection,$query); 

    if (!$result) {
    die('Error' . mysqli_error($connection));
    }
    else
    {
    echo "Successfully updated";
    }
}
?>

To demonstrate I've created a database & table test_table with 3 field. (id,name,cost)

This is the structure of my table :

enter image description here

Before executing the above script, our table contains this datas

enter image description here

After executing the script, the name in second row changes from ramu to shiva since we specified cost as 500 in WHERE Condition.

$query = "UPDATE `test_table` SET `name` = '$name' WHERE `cost` = 500";


enter image description here

Yuva Raj
  • 3,881
  • 1
  • 19
  • 30