Sophie
Sophie

Reputation: 23

Save text with Tinymce online editor in Mysql database and show the saved text on the website

I have another question about connecting to Mysql database.

I have a simple text document with Tinymce online text editor. Online I want to change the text with the editor, save it to Mysql database and then show the new text online. I have the following scripts and I get this error from the file doAddContents.php:

Warning: mysql_real_escape_string(): Access denied for user ''@'localhost' (using password: NO) in /../doAddContents.php on line 8

Warning: mysql_real_escape_string(): A link to the server could not be established in /../doAddContents.php on line 8

I have no idea what I'm doing wrong. Here are the scripts:

first the script to connect to the database:

db.php:

<?php
function doDB() {
  global $mysqli;

  //connect to server and select database
  $mysqli = mysqli_connect("localhost", "name", "pass", "db-name");

  //if the connection fails, stop script execution
  if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
  }
}
?>

doAddContents.php file:

<?php
include("db.php");
doDB();

$h4_block = "Contents Saved!";
$elm1 = $_POST['elm1'];
$entity_elm1 = htmlentities($elm1);
$entity_elm1 = mysql_real_escape_string($entity_elm1);
$add_contents_sql = "UPDATE tinymce_contents SET `contents`=
    '$entity_elm1', `modified`=now()";
$add_contents_res = mysqli_query($mysqli, $add_contents_sql) 
    or die(mysqli_error($mysqli));

//close connection to MySQL
mysqli_close($mysqli);

//create nice message for user
$display_block = "<p>The page has been successfully updated.</p>";

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <body>
    <div>
      <h4><?php echo $h4_block; ?></h4>
          <?php echo $display_block; ?>
          <a href="view.php">View Page!</a>
    </div>
  </body>
</html>

View.php file:

<?php
include("db.php");
doDB();

$h4_block = "View Page!";
$get_contents_sql = "SELECT * FROM tinymce_contents";
$get_contents_res = mysqli_query($mysqli, $get_contents_sql) 
    or die(mysqli_error($mysqli));

if ($get_contents_res = mysqli_query($mysqli, $get_contents_sql)) {
  //fetch associative array
  while ($row = mysqli_fetch_assoc($get_contents_res)) {

    $id = $row['id'];
    $contents = $row['contents'];
    $modified = $row['modified'];

    //Draw the results
    $view_block  ="<p>ID: ".$id."</p>";
    $view_block .="<b>Contents</b>:".html_entity_decode($contents);
    $view_block .="<b>Modified</b>:".$modified."<br/>";
  }
}

//close connection to MySQL
mysqli_close($mysqli);
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <body>
    <div>
      <h4><?php echo $h4_block; ?></h4>
          <?php echo $view_block; ?>
          <a href="index.php">Back to Page Edit!</a>
    </div>
  </body>
</html>

Upvotes: 1

Views: 806

Answers (1)

Miguelo
Miguelo

Reputation: 1078

According to the documentation of mysql_real_escape_string. The function will try to create a mysql connection if there is no connection opened with mysql_connect().

http://php.net/manual/en/function.mysql-real-escape-string.php

You should not be using mysql_real_escape_string() but mysqli_real_escape_string()

http://php.net/manual/en/mysqli.real-escape-string.php

Upvotes: 1

Related Questions