Android Question [Solved] PHP-Script not working anymore

D

Deleted member 103

Guest
Hi,

can someone tell me why my script stops working? It worked fine until a few days ago at 1&1.
Now I only get the error "Internal Server Error".

B4X:
<?php
// Anfang
include("cnf/var.php");
// Ende

$con = mysql_connect($dbhost,$dbusername,$dbpassword) or die(mysql_error());
mysql_select_db($dbname) or die(mysql_error());
$query = file_get_contents("php://input");
$sth = mysql_query($query);

if (mysql_errno()) {
    header("HTTP/1.1 500 Internal Server Error");
    echo $query.'\n';
    echo mysql_error();
}
else
{
    if (isset($_GET["select"]))
    {
        $rows = array();
        while($r = mysql_fetch_assoc($sth))
        {
            $rows[] = $r;
        }
        print json_encode($rows);
    }
    elseif (isset($_GET["insert"]))
    {
        print mysql_insert_id();
    }
    else
    {
        print $sth;
    }
}
?>
 

OliverA

Expert
Licensed User
Longtime User
You're throwing an internal server error message if you have connection issues with MySQL. Is this causing the issue (your DB down?)?
 
Upvote 0
D

Deleted member 103

Guest
You're throwing an internal server error message if you have connection issues with MySQL. Is this causing the issue (your DB down?)?
No, 1&1 just changed the PHP version from 5.5 to 7.2, and now my script stops working.
 
Upvote 0

DonManfred

Expert
Licensed User
Longtime User
mysql_connect and the others (old connection tools) are not working in PHP5.6+

You need to switch to a MySQLi Class!

The Attached Class comes from here.

PD: Honestly; the deprecation of the old Mysql-Classes is about (at least) FIVE years old!
Check this SO-Answer from 2012.
The fault is yours (you did not updated your php routines for years).
 

Attachments

  • phpMySQLi-Class.zip
    19.3 KB · Views: 292
Last edited:
Upvote 0
D

Deleted member 103

Guest
Thank you Manfred, but it is not too complicated for me.
Is there any way to convert my script to PHP 7+ ?
 
Upvote 0
D

Deleted member 103

Guest
The fault is yours (you did not updated your php routines for years).
I know, that's my mistake.
I do not know PHP at all.
I put the script together years ago with the help of B4x.
 
Upvote 0

KMatle

Expert
Licensed User
Longtime User
No big change. Just change it like that

B4X:
$con = mysqli_connect($host,$user,$pw) or die(mysqli_error());
mysqli_select_db($con,$db) or die(mysqli_error());
mysqli_query($con,"SET CHARACTER SET utf8");
mysqli_query($con,"SET NAMES 'utf8'");

Instead

B4X:
mysql_connect

it's

B4X:
mysqli_connect

Mostly they added an i Very easy...
 
Upvote 0
D

Deleted member 103

Guest
Unfortunately that is not enough, it comes this error message but no more data.
There's something wrong in the code down here.
B4X:
else
{
    if (isset($_GET["select"]))
    {
        $rows = array();
        while($r = mysqli_fetch_assoc($sth))
        {
            $rows[] = $r;
        }
        print json_encode($rows);
    }
    elseif (isset($_GET["insert"]))
    {
        print mysqli_insert_id();
    }
    else
    {
        print $sth;
    }
}
 
Upvote 0
D

Deleted member 103

Guest
I found it, that's how it works.
B4X:
<?php
// Anfang
include("cnf/var.php");
// Ende

$conn = new mysqli($dbhost,$dbusername,$dbpassword,$dbname);
$query = file_get_contents("php://input");

if (mysqli_errno()) {
    header("HTTP/1.1 500 Internal Server Error");
    echo $query.'\n';
    echo mysqli_error();
}
else
{
    $result = $conn->query($query);

    if (isset($_GET["select"]))
    {
        $rows = array();
        while($r = $result->fetch_assoc()) {
            $rows[] = $r;
        }
        print json_encode($rows);
    }
    elseif (isset($_GET["insert"]))
    {
        print $conn->insert_id;
    }
    else
    {
        print $sth;
    }
}
?>
 
Upvote 0
Cookies are required to use this site. You must accept them to continue using the site. Learn more…