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;






?>
5
  • 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 Commented Mar 28, 2014 at 14:30
  • Don't you need a WHERE for your UPDATE statement ? Commented Mar 28, 2014 at 14:31
  • try: $res = mysql_query($query) or die("error: ".mysql_error()); Commented Mar 28, 2014 at 14:33
  • This is a very unsafe way to execute a SQL query, use PDO (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. Commented Mar 28, 2014 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. Commented Mar 28, 2014 at 14:35

2 Answers 2

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

Sign up to request clarification or add additional context in comments.

7 Comments

if where is missing it will update all rows , isn't it ?
A where clause is required always, if you want to update all rows you can use WHERE 1=1
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 .
yup , but still in case if 'where' is missing , does it throws any errors ??
@Matt Since when is a WHERE statement required when updating all rows? (I'm interested, not sarcastic.)
|
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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.