0

I am having a weird problem, I am trying to populate the datatable using ajax call to my php program which internally gets data from database.

php:

<?php
require_once('config.php');
$query = mysql_query("select * from productdetails");
while($fetch = mysql_fetch_array($query))
{
        $output[] = array ($fetch[0],$fetch[1],$fetch[2],$fetch[3],$fetch[4],$fetch[5]);
}
echo json_encode($output, JSON_FORCE_OBJECT);
?>

Html(ajax call):

$.ajax({
            url: 'process.php?method=fetchdata',
            data: "json",
            success: function(s){
            console.log($(s).text());
                    oTable.fnClearTable();
                        for(var i = 0; i < s.length; i++) {
                         oTable.fnAddData([
                                    s[i][0],
                                    s[i][1],
                                    s[i][2],
                                    s[i][3],
                                    s[i][4],
                                    s[i][5]
                                           ]);                                      
                                        } // End For

            },
            error: function(e){
               console.log(e.responseText); 
            }
            });

This generates the output as


( ! ) Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\wamp\www\datatableone\process.php on line 2 Call Stack #TimeMemoryFunctionLocation 10.0010242552{main}( )..\process.php:0 20.0010242840http://www.php.net/function.mysql-connect' target='_new'>mysql_connect ( )..\process.php:2 {"0":{"0":"1","1":"Iron","2":"AX12","3":"Google","4":"21.95","5":"HW"},"1":{"0":"2","1":"DartBoard","2":"AZ52","3":"Apple","4":"12.95","5":"SG"},"2":{"0":"3","1":"BasketBall","2":"BA74","3":"Microsoft","4":"29.95","5":"SG"},"3":{"0":"4","1":"Compopper","2":"BH22","3":"Google","4":"24.95","5":"HW"},"4":{"0":"5","1":"Gas Grill","2":"BT04","3":"Apple","4":"149.95","5":"AP"},"5":{"0":"6","1":"Washer","2":"BZ66","3":"Google","4":"399.99","5":"AP"}}

But my required output should be: (only json)

{"0":{"0":"1","1":"Iron","2":"AX12","3":"Google","4":"21.95","5":"HW"},"1":{"0":"2","1":"DartBoard","2":"AZ52","3":"Apple","4":"12.95","5":"SG"},"2":{"0":"3","1":"BasketBall","2":"BA74","3":"Microsoft","4":"29.95","5":"SG"},"3":{"0":"4","1":"Compopper","2":"BH22","3":"Google","4":"24.95","5":"HW"},"4":{"0":"5","1":"Gas Grill","2":"BT04","3":"Apple","4":"149.95","5":"AP"},"5":{"0":"6","1":"Washer","2":"BZ66","3":"Google","4":"399.99","5":"AP"}}

any suggestions please.

Thanks Sai

Solution:

PHP:

<?php
$servername = "localhost";
$username = "root";
$password = "123456";

try {
        $conn = new PDO("mysql:host=$servername;dbname=holt", $username, $password);
        $statement=$conn->prepare("SELECT * FROM productdetails");
        $statement->execute();
        $results=$statement->fetchAll(PDO::FETCH_ASSOC);
        $json=json_encode($results);
        echo $json;
    } catch(PDOException $e) {
        echo "Connection failed: " . $e->getMessage();
    }
?>

Thanks for suggestions.

2
  • 2
    turn off warnings or switch to PDO Commented Dec 5, 2015 at 19:47
  • The error message tells you exactly what to do: use mysqli or PDO instead Commented Dec 5, 2015 at 20:57

1 Answer 1

1

As noted in the comments, you should turn off warnings, or better yet, write your code in a manner that doesn't produce warnings.

On turning off warnings: Turn off warnings and errors on php/mysql

You can suppress errors inline with the @ symbol, which is the error control operator in php. Putting @ at the beginning of your mysql_connect() line should get rid of it, but you should switch to PDO!

On PDO (which I recommend and use): http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059

PDO protects you against SQL injection and allows queries to be sent to the database and constructed beforehand, and you send the inputs afterwards via "placeholders".

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

5 Comments

I turned off warnings in wamp and updated the code using PDO. Please find the code here. <?php $servername = "localhost"; $username = "root"; $password = "123456"; try { $conn = new PDO("mysql:host=$servername;dbname=holt", $username, $password); $statement=$pdo->prepare("SELECT * FROM productdetails"); $statement->execute(); $results=$statement->fetchAll(PDO::FETCH_ASSOC); $json=json_encode($results); echo $json; } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); } ?>
can you please check it once.
$statement=$pdo->prepare("SELECT * FROM productdetails"); This line should have $conn instead of $pdo, $conn is the name of your DB object.
It is working fine now after updating $conn rather than $pdo. I will update this in the solution box.
Great, glad I could help

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.