Hi all,

Im busy moving a site from localhost to hosted server and im baffled as to why mysqli simply wont run.

The following script iscalled after a captcha script has been satisfied, but it just doesnt seem to like the Mysqli. I have converted other simple mysqli scripts, but this one is giving me a big headache.

Is Mysqli something that can be activated in .htaccess?

Any help is appreciated.

Thanks

<?php
//set up a couple of functions
function doDB() {
	global $mysqli;

	//connect to server and select database; you may need it
	$mysqli = mysqli_connect("localhost", "------", "---------", "--------");

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

function emailChecker($email) {
	global $mysqli, $check_res;

	//check that email is not already in list
	$check_sql = "SELECT id FROM SUBSCRIBERS WHERE email = '".$email."'";
	$check_res = mysqli_query($mysqli, $check_sql) or die(mysqli_error($mysqli));
}

//determine if they need to see the form or not
if (!$_POST) {
	//they need to see the form, so create form block
	$display_block = "
	<form method=\"POST\" action=\"".$_SERVER["PHP_SELF"]."\">

	<p><strong>Your E-Mail Address:</strong><br/>
	<input type=\"text\" name=\"email\" size=\"30\" maxlength=\"150\">

	<p><strong>Action:</strong><br/>
	<input type=\"radio\" name=\"action\" value=\"sub\" checked> subscribe
	<input type=\"radio\" name=\"action\" value=\"unsub\"> unsubscribe

	<p><input type=\"submit\" name=\"submit\" value=\"Submit Form\"></p>
	</form>";

} else if (($_POST) && ($_POST["action"] == "sub")) {
	//trying to subscribe; validate email address
	if ($_POST["email"] == "") {
		header("Location: manage.php");
		exit;
	} else {
		//connect to database
		doDB();

		//check that email is in list
		emailChecker($_POST["email"]);

		//get number of results and do action
		if (mysqli_num_rows($check_res) < 1) {
			//free result
			mysqli_free_result($check_res);

			//add record
			$add_sql = "INSERT INTO subscribers (email) VALUES('".$_POST["email"]."')";
			$add_res = mysqli_query($mysqli, $add_sql) or die(mysqli_error($mysqli));
			$display_block = "<p>Thanks for signing up!</p>";

			//close connection to MySQL
			mysqli_close($mysqli);
		} else {
			//print failure message
			$display_block = "<p>You're already subscribed!</p>";
		}
	}
} else if (($_POST) && ($_POST["action"] == "unsub")) {
	//trying to unsubscribe; validate email address
	if ($_POST["email"] == "") {
		header("Location: manage.php");
		exit;
	} else {
		//connect to database
		doDB();

		//check that email is in list
		emailChecker($_POST["email"]);

		//get number of results and do action
		if (mysqli_num_rows($check_res) < 1) {
			//free result
			mysqli_free_result($check_res);

			//print failure message
			$display_block = "<p>Couldn't find your address!</p>
			<p>No action was taken.</p>";
		} else {
			//get value of ID from result
			while ($row = mysqli_fetch_array($check_res)) {
				$id = $row["id"];
			}

			//unsubscribe the address
			$del_sql = "DELETE FROM subscribers WHERE id = '".$id."'";
			$del_res = mysqli_query($mysqli, $del_sql) or die(mysqli_error($mysqli));
			$display_block = "<P>You're unsubscribed!</p>";
		}
		mysqli_close($mysqli);
	}
}
?>
<html>
<head>

</head>
<body>
<strong>Email Updates</strong>
<?php echo "$display_block"; ?>
</body>
</html>

I figured it out.

The problem lay with me using php5 code on a php4 server. I contacted the hosting company and they gave me i small line of code to include in the .htaccess root file to force the files to be parsed in php5 rather than php4. it worked!!

This article has been dead for over six months. Start a new discussion instead.