FRIHOST FORUMS SEARCH FAQ TOS BLOGS COMPETITIONS
You are invited to Log in or Register a free Frihost Account!


Getting Fatal Error in php mysqli





Mythri
Hi I am not getting how to resolve this issue, where exactly i am going wrong. Please help me in this.

here is my complete code

Code:
<?php

        include("db_connect.php");
         $mysqli = new mysqli("localhost", "user", "pass", "db");
                  if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}
     
        function renderForm($ProductName = '', $Description ='', $Price ='', $Size ='', $error = '', $ProductID = '')
        { ?>
                <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
                <html>
                        <head> 
                                <title>
                                        <?php if ($ProductID != '') { echo "Edit Record"; } else { echo "New Record"; } ?>
                                </title>
                                <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
                        </head>
                        <body>
                                <h1><?php if ($ProductID != '') { echo "Edit Record"; } else { echo "New Record"; } ?></h1>
                                <?php if ($error != '') {
                                        echo "<div style='padding:4px; border:1px solid red; color:red'>" . $error
                                                . "</div>";
                                } ?>
                               
                                <form action="" method="post">
                                <div>
                                        <?php if ($ProductID != '') { ?>
                                                <input type="hidden" name="id" value="<?php echo $ProductID; ?>" />
                                                <p>ID: <?php echo $id; ?></p>
                                        <?php } ?>
                                       
                                        <strong>Product Name: *</strong> <input type="text" name="ProductName"
                                                value="<?php echo $ProductName; ?>"/><br/>
                                        <strong>Description: *</strong> <input type="text" name="Description"
                                                value="<?php echo $Description; ?>"/>
                                         <strong>Price: *</strong> <input type="text" name="Price"
                                                value="<?php echo $Price; ?>"/>
                                          <strong>Size: *</strong> <input type="text" name="Size"
                                                value="<?php echo $Size; ?>"/>           
                                        <p>* required</p>
                                        <input type="submit" name="submit" value="Submit" />
                                </div>
                                </form>
                        </body>
                </html>
               
        <?php }



        /*

           EDIT RECORD

        */
       
        if (isset($_GET['ProductID']))
        {
               
                if (isset($_POST['submit']))
                {
                       
                        if (is_numeric($_POST['ProductID']))
                        {
                               
                                $productid = $_POST['ProductID'];
                                $productname = htmlentities($_POST['ProductName'], ENT_QUOTES);
                                $description = htmlentities($_POST['Description'], ENT_QUOTES);
                                $price = htmlentities($_POST['Price'], ENT_QUOTES);
                                $size = htmlentities($_POST['Size'], ENT_QUOTES);
                               
                               
                                if ($productname == '' || $description == '' || $price =='' || $size =='')
                                {
                                        // if they are empty, show an error message and display the form
                                        $error = 'ERROR: Please fill in all required fields!';
                                        renderForm($productname, $description, $price, $size, $error, $productid);
                                }
                                else
                                {
                               
                                     
                                        if ($stmt = $mysqli->prepare("UPDATE Products SET ProductName = ?, Description = ?, Price = ?, Size = ?
                                                WHERE id=?"))
                                        {
                                                $stmt->bind_param("ssi", $productname, $description, $price, $size, $id);
                                                $stmt->execute();
                                                $stmt->close();
                                        }
                                       
                                        else
                                        {
                                                echo "ERROR: could not prepare SQL statement.";
                                        }
                                       
                                       
                                        header("Location: view.php");
                                }
                        }
                       
                        else
                        {
                                echo "Error!";
                        }
                }
               
                else
                {
                       
                        if (is_numeric($_GET['ProductID']) && $_GET['ProductID'] > 0)
                        {
                                $id = $_GET['ProductID'];
                               
                               
                                if($stmt = $mysqli->prepare("SELECT * FROM Products WHERE id=?"))
                                {
                                        $stmt->bind_param("i", $id);
                                        $stmt->execute();
                                       
                                        $stmt->bind_result($id, $ProductName, $Description, $Price,  $Size);
                                        $stmt->fetch();
                                       
                                       
                                        renderForm($ProductName, $Description, $Price, $Size, NULL, $id);
                                       
                                        $stmt->close();
                                }
                               
                                else
                                {
                                        echo "Error: could not prepare SQL statement";
                                }
                        }
                       
                        else
                        {
                                header("Location: view.php");
                        }
                }
        }



        /*

           NEW RECORD

        */
       
        else
        {
               
                if (isset($_POST['submit']))
                {
                        // get the form data
                       
                        $ProductName = htmlentities($_POST['ProductName'], ENT_QUOTES);
                        $Description = htmlentities($_POST['Description'], ENT_QUOTES);
                        $Price = htmlentities($_POST['Price'], ENT_QUOTES);
                        $Size = htmlentities($_POST['Size'], ENT_QUOTES);
                       
                       
                        if ($ProductName == '' || $Description == '' || Price =='' || Size =='')
                        {
                               
                                $error = 'ERROR: Please fill in all required fields!';
                                renderForm($ProductName, $Description, $Price,  $Size, $error);
                        }
                        else
                        {
                               
                               
                                if ($stmt = $mysqli->prepare("INSERT Products (ProductName, Description, Price, Size) VALUES (?, ?, ?, ?)"))
                                {
                                        $stmt->bind_param("ss", $ProductName, $Description, $Price,  $Size);
                                        $stmt->execute();
                                        $stmt->close();
                                }
                                // show an error if the query has an error
                                else
                                {
                                        echo "ERROR: Could not prepare SQL statement.";
                                }
                               
                                // redirec the user
                                header("Location: view.php");
                        }
                       
                }
               
                else
                {
                        renderForm();
                }
        }
       
       
       
?>


I am getting errors like

Warning: mysqli_stmt::bind_param() [mysqli-stmt.bind-param]: Number of elements in type definition string doesn't match number of bind variables in /home/netelmbn/public_html/test/records.php on line 177

Warning: Cannot modify header information - headers already sent by (output started at /home/netelmbn/public_html/test/records.php:177) in /home/netelmbn/public_html/test/records.php on line 188

if i remove
Code:
 $mysqli = new mysqli("localhost", "user", "pass", "db");
                  if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}


I get Fatal Error message

Please suggest me where i am going wrong and how to resolve this
Mythri
Now i have edited the code and just getting message

Error!

Plz suggest me in this
Fire Boar
Code:
$stmt->bind_param("ssi", $productname, $description, $price, $size, $id);


The first parameter of bind_param should have length equal to the number of remaining arguments. In this case, instead of "ssi", I think you want "ssiii" (price should be stored as an integer or string, not as a float, because of possible rounding errors).

Quote:
Now i have edited the code and just getting message

Error!

Plz suggest me in this


That message seems to appear when ProductID is not numeric. Make sure that ProductID in your form is correctly set.
Mythri
Hey,

I have done it properly. But now am getting

Error: could not prepare SQL statement error.
Request you please do help me
Fire Boar
Code:
if ($stmt = $mysqli->prepare("INSERT Products (ProductName, Description, Price, Size) VALUES (?, ?, ?, ?)"))


The syntax is INSERT INTO tablename (fields) VALUES (values). You're missing the INTO.
Related topics
Fatal error: Cannot instantiate non-existent class:
Fatal PHP error
Fatal error: Allowed memory size of 8388608 bytes exhausted
fatal error
Fatal error in chat
Fatal error: Cannot instantiate...
[help]fatal error eso dice mi web
fatal error in Joomla installation "index.php"
Ca't retreive email via webmail (Fatal error:Allowed memory)
Fatal Error in frihost please help me
" Fatal error: Allowed memory size of 52428800" bl
Fatal error!
PHP Fatal Error (Issue Resolved)
Fatal error Allowed memory size of 268435456 bytes exhausted
Reply to topic    Frihost Forum Index -> Scripting -> Php and MySQL

FRIHOST HOME | FAQ | TOS | ABOUT US | CONTACT US | SITE MAP
© 2005-2011 Frihost, forums powered by phpBB.