Can't Connect to MariaDB from Basic PHP Script - php

I'm trying to learn how to make mysql queries, using MAMP, MariaDB, and 2 PHP scripts.
I used MYSQL Workbench to make a schema (helloWorld), added a table (Paintings), and put 2 entries in the table. I created a 'shuwoo'#'localhost' user, and granted all permissions to it, using the terminal. I successfully logged into MYSQL Workbench, but when I looked at shuwoo's "Administrative Roles", "DBA", "SecurityAdmin", and "DBManager" are unchecked. Trying to enable them in the Workbench gives me an error.
The real issue is that my php script gives me an error, "Could not connect: Access denied for user 'shuwoo'#'localhost' (using password: YES)" when I run the script. The code is very simple, here it is:
Note: I've noticed it doesn't matter what I enter for mysql_select_db. I think that's because I'm not even getting access to this level?
Your help is greatly appreciated!
<?php
$dbhost = 'localhost:3306';
$dbuser = 'shuwoo';
$dbpass = 'Poptart5';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT * FROM Paintings';
mysql_select_db('helloWorld');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
echo "ID :{$row['Id']} <br> ".
"Title: {$row['Title']} <br> ".
"Description: {$row['Description']} <br> ".
"Medium: {$row['Medium']} <br> ".
"--------------------------------<br>";
}
echo "Fetched data successfully";
mysql_close($conn);
?>

Related

Unable to post form data to RDS MySQL Database

Hello anyone who can help (or having the same issue).
I have a form on my website I need to store the data in a database.
I have no problems when using any other database service but when using an Amazon RDS Database I have no luck.
This php file is used to send the data to the database.
<?php
$dbhost = "xxxx.xxxx.ap-southeast-2.rds.amazonaws.com";
$dbuser = "username";
$dbpass = "pasword";
$userid = $_GET['UniqueID'];
$username = $_GET['name'];
$useremail = $_GET['email'];
$userphone = $_GET['phone'];
$userref = $_GET['refid'];
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$sql = "INSERT INTO landing_post (`useid`, `name`, `email`, `phone`, `refid`) VALUES ('$userid', '$username', '$useremail', '$userphone', '$userref')";
mysql_select_db('bunker');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not enter data: ' . mysql_error());
}
echo "Entered data successfully\n";
mysql_close($conn);
?>
After the form is submitted to the original post action, it opens the below url.
https://example.com.au/test/post.php?&UniqueID=10020&name=burger&email=test%40mvmedia.com&phone=1800+000+000&refid=28383
The $_GET functions fill out the data using the variables in the url.
When running the php from a cpanel based server I get this error.
Could not connect: Can't connect to MySQL server on 'xxxxx.xxxxxxx.ap-southeast-2.rds.amazonaws.com' (111)
When running the php from a AWS EC2 instance I don't even get a error readout.
Any assistance or insight would be greatly appreciated.
Cheers,
Andy
Shout out to JeanPaul98 who put me on the right path. After trial and many errors, i found the below code solved the issue.
<?php
$userid = $_GET['UniqueID'];
$username = $_GET['name'];
$useremail = $_GET['email'];
$userphone = $_GET['phone'];
$userref = $_GET['refid'];
$link = mysqli_connect('xxxxx.xxxxxx.ap-southeast-2.rds.amazonaws.com', 'User', 'password','database');
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// Check if server is alive
if (mysqli_ping($link))
{
echo "Connection is ok!";
}
else
{
echo "Error: ". mysqli_error($link);
}
mysqli_query($link,"INSERT INTO table (`useid`, `name`, `email`, `phone`, `refid`) VALUES ('$userid', '$username', '$useremail', '$userphone', '$userref')")
or die(mysqli_error($link));
echo "Entered data successfully\n";
mysqli_close($link);
?>
The main change was I stopped using mysql and rather used mysqli. There are also some structural changes to make the code to work with mysqli. For others having a similar issues here are a few things to check.
You have opened a inbound port for the IP in the security group of the RDS Database.
The Database is publicly accessible.
That your php version has PDO_MYSQL installed, or compatible driver (more details here
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_PHP.rds.html)

basic mysql data extraction using php

I've looked all over here. Please be patient as I am new to php and mysql.
I got WAMPP installed & seems to be working OK. I created a simple "test" database from phpMyAdmin and "firsttable" in that. I can do a simple connect using example from w3schools, but trying to select & display data I entered only throws back errors.
<?php
$servername = "localhost";
$username = "root";
$password = "";
// Connect
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT reference, firstname, lastname, room FROM firsttable";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "id: " . $row["reference"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "room:" . $row["room"]. "<br>";
}
} else {
echo "0 results";
}
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$conn->close();
?>
First off, I get a parse error on line 17. The one that reads:
if ($result->num_rows > 0) {
The error says: Trying to get property of non-object.
I tried wrapping the whole php code in tags and saving it as html, but then it appeared that no row data was ever found.
I am able to use very simple code that connects successfully. I can confirm the database is in there, so is the table, and the contents I added to it.
Please, what am I doing wrong?
You need to specify the database when you connect:
$database = 'test';
$conn = mysqli_connect($servername, $username, $password, $database);
where $database is the name of your database (test in this case). MySQL doesn't know which database your table resides in without you telling it.
In addition, you should always include error checking for your database connection (you have two of these, you don't need the last one) as well as any queries. Sans this, you can check your error logs for more information when something fails.

Cannot create new MySQL database in php

I am having issues trying to create a new MySQL database in php,
my code is:
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = ‘somepassword’;
$conn = new mysqli($dbhost, $dbuser, $dbpass);
if(!$conn->connect_error )
{
die('Could not connect: %s' . $conn->connect_error);
}
echo "Connected successfully\n";
$sql = "CREATE DATABASE TUTORIALS2";
if($conn->query($sql)===TRUE){
echo "Created the database\n";
}
else {
echo "Failed to create the database".$conn->error;
}
//Close the database
$conn->close();
?>
MySQL connects fine but it won't allow me to create a new database. Not a clue what I'm doing wrong here. Any pointers would be greatly appreciated!
Second Edit:
I somehow missed this, apologies.
You have a mistake here:
if(!$conn->connect_error )
should be
if($conn->connect_error )
see here http://php.net/manual/en/mysqli.connect-error.php
Edit:
run this query SHOW GRANTS FOR 'root'#'localhost'; either from php or from PhpMyAdmin or similar and see if the user root has the privilege to create databases.
More here http://dev.mysql.com/doc/refman/5.0/en/show-grants.html
First of all you need to enable error_reporting and second you have some bad quotes on this line
$dbpass = ‘somepassword’;
replace like this
$dbpass = 'somepassword';

db cant connect in php

I have a script where I need to connect to MySQL db. But somehow the connection is failed. Can anyone help me to check the problem? Thanks ahead.
$username = "root";
$password = "";
$hostname = "localhost";
$dbname = "vti_ctes_demo";
$con = mysql_connect($hostname, $username, $password);
if (!$con) {
die('Could not connect: ' . mysql_error());
}else
{
echo 'connected';
}
// make foo the current db
$db_selected = mysql_select_db($dbname, $con);
if (!$db_selected) {
die ('Can\'t use vti_ctes_demo : ' . mysql_error());
}else
{
echo 'connected';
}
The moment I run the query, I get this error:
Can't use vti_ctes_demo : Access denied for user ''#'localhost' to database 'vti_ctes_demo'
I have set the username as 'root', but it seems like it can't receive the username. Btw, first connection is successful. Just that, the moment when it's connected to the db, then the error appeared.
You need grant privileges to the user "root" if you want external access to database vti_ctes_demo.
Use this to grant permission to the user

sql queries embeded in php code don't get executed while working with cpanel

I am new at cpanel and I encountered a problem. I have made a database and a database user for it in cpanel and successfully connected to them via my php code. In spite of that I have a successful connection to database but none of my queries run in the application code (while they run in the phpMyadmin!).
<?php
session_start();
$conn =new mysqli('localhost','myDBname','myDBpass','myDBuser');
if($conn)
echo "<script>alert('successful connection');</script>";
$rawresults ="SELECT * FROM `articles`";
$result = $conn->query($rawresults);
if($result->num_rows>0)
{
echo "<script>alert('dd')</script>";
$_SESSION["i"]=0;
while($results = $result->fetch_assoc())
{
setcookie("searchResult","yes");
$_SESSION["topic".$_SESSION["i"]]=$results['topic'];
$_SESSION["name".$_SESSION["i"]]=$results['fileName'];
$_SESSION["texts".$_SESSION["i"]]=$results['texts'];
$_SESSION["i"]++;
}
header('location:index.php');
}
else if($result->num_rows==0)
{
echo "<script>alert('cc')</script>";
setcookie("searchResult","yes");
header('location:index.php');
}
?>
The problem is that I permanently face: alert(cc)! While table 'articles'
contains lots of information and num_rows is a positive value.
I 'd like to mention again that connection to db has no problem and I get alert(successful connection).
Try this after connecting:
if ($conn->connect_error) {
die('Connect Error (' . $conn ->connect_errno . ') '
. $conn->connect_error);
}

Categories