Jump to content
Larry Ullman's Book Forums

Recommended Posts

There are a bunch of errors I'm getting which seem to be related to the use of mysqli. I'm thinking its related to my use of mysql_connect instead of mysqli_connect, but the reason I'm not sure is

1. lack experience

2. the mysqli_connect.php looks.

 

Useful background info as follows: (error message, code from add_prints.php, currently running ver php 5.2.5 and mysql 5.0.45.

 

Warning: mysqli_prepare() expects parameter 1 to be mysqli, resource given in \\boswinfs04\home\users\web\b2638\ywh.cenariocouk\REBAHIA\add_print.php on line 78

 

Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, null given in \\boswinfs04\home\users\web\b2638\ywh.cenariocouk\REBAHIA\add_print.php on line 79

 

Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, null given in \\boswinfs04\home\users\web\b2638\ywh.cenariocouk\REBAHIA\add_print.php on line 80

 

Warning: mysqli_stmt_affected_rows() expects parameter 1 to be mysqli_stmt, null given in \\boswinfs04\home\users\web\b2638\ywh.cenariocouk\REBAHIA\add_print.php on line 83

 

Warning: mysqli_stmt_close() expects parameter 1 to be mysqli_stmt, null given in \\boswinfs04\home\users\web\b2638\ywh.cenariocouk\REBAHIA\add_print.php on line 91

Error!

 

The following error(s) occurred:

- No file was uploaded.

- Please enter the print's price!

- The new artist could not be added to the database!

Please reselect the print image and try again.

 

***********

CODE

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Add a Print</title>
</head>
<body>
<?php # Script 17.1 - add_print.php
// This page allows the administrator to add a print (product).

require_once ('mysql_connect.php');

if (isset($_POST['submitted'])) { // Handle the form.

// Validate the incoming data...
$errors = array();

// Check for a print name:
if (!empty($_POST['print_name'])) {
	$pn = trim($_POST['print_name']);
} else {
	$errors[] = 'Please enter the print\'s name!';
}

// Check for an image:
if (is_uploaded_file ($_FILES['image']['tmp_name'])) {

	// Create a temporary file name:
	$temp = 'uploads/' . md5($_FILES['image']['name']);

	// Move the file over:
	if (move_uploaded_file($_FILES['image']['tmp_name'], $temp)) {

		echo '<p>The file has been uploaded!</p>';

		// Set the $i variable to the image's name:
		$i = $_FILES['image']['name'];

	} else { // Couldn't move the file over.
		$errors[] = 'The file could not be moved.';
		$temp = $_FILES['image']['tmp_name'];
	}

} else { // No uploaded file.
	$errors[] = 'No file was uploaded.';
	$temp = NULL;
}

// Check for a size (not required):
$s = (!empty($_POST['size'])) ? trim($_POST['size']) : NULL;

// Check for a price:
if (is_numeric($_POST['price'])) {
	$p = (float) $_POST['price'];
} else {
	$errors[] = 'Please enter the print\'s price!';
}

// Check for a description (not required):
$d = (!empty($_POST['description'])) ? trim($_POST['description']) : NULL;

// Validate the artist...
if (isset($_POST['artist']) && ($_POST['artist'] == 'new') ) {
	// If it's a new artist, add the artist to the database...

	// Validate the first and middle names (neither required):
	$fn = (!empty($_POST['first_name'])) ? trim($_POST['first_name']) : NULL;
	$mn = (!empty($_POST['middle_name'])) ? trim($_POST['middle_name']) : NULL;

	// Check for a last_name...
	if (!empty($_POST['last_name'])) {

		$ln = trim($_POST['last_name']);

		// Add the artist to the database:
		$q = 'INSERT INTO artists (first_name, middle_name, last_name) VALUES (?, ?, ?)';
		$stmt = mysqli_prepare($dbc, $q);
		mysqli_stmt_bind_param($stmt, 'sss', $fn, $mn, $ln);
		mysqli_stmt_execute($stmt);

		// Check the results....
		if (mysqli_stmt_affected_rows($stmt) == 1) {
			echo '<p>The artist has been added.</p>';
			$a = mysqli_stmt_insert_id($stmt); // Get the artist ID.
		} else { // Error!
			$errors[] = 'The new artist could not be added to the database!';
		}

		// Close this prepared statement:
		mysqli_stmt_close($stmt);

	} else { // No last name value.
		$errors[] = 'Please enter the artist\'s name!';
	}

} elseif ( isset($_POST['artist']) && ($_POST['artist'] == 'existing') && ($_POST['existing'] > 0) ) { // Existing artist.
	$a = (int) $_POST['existing'];
} else { // No artist selected.
	$errors[] = 'Please enter or select the print\'s artist!';
}

if (empty($errors)) { // If everything's OK.

	// Add the print to the database:
	$q = 'INSERT INTO prints (artist_id, print_name, price, size, description, image_name) VALUES (?, ?, ?, ?, ?, ?)';
	$stmt = mysqli_prepare($dbc, $q);
	mysqli_stmt_bind_param($stmt, 'isdsss', $a, $pn, $p, $s, $d, $i);
	mysqli_stmt_execute($stmt);

	// Check the results...
	if (mysqli_stmt_affected_rows($stmt) == 1) {

		// Print a message:
		echo '<p>The print has been added.</p>';

		// Rename the image:
		$id = mysqli_stmt_insert_id($stmt); // Get the print ID.
		rename ($temp, "uploads/$id");

		// Clear $_POST:
		$_POST = array();

	} else { // Error!
		echo '<p style="font-weight: bold; color: #C00">Your submission could not be processed due to a system error.</p>'; 
	}

	mysqli_stmt_close($stmt);

} // End of $errors IF.

// Delete the uploaded file if it still exists:
if ( isset($temp) && file_exists ($temp) && is_file($temp) ) {
	unlink ($temp);
}

} // End of the submission IF.

// Check for any errors and print them:
if ( !empty($errors) && is_array($errors) ) {
echo '<h1>Error!</h1>
<p style="font-weight: bold; color: #C00">The following error(s) occurred:<br />';
foreach ($errors as $msg) {
	echo " - $msg<br />\n";
}
echo 'Please reselect the print image and try again.</p>';
}

// Display the form...
?>
<h1>Add a Print</h1>
<form enctype="multipart/form-data" action="add_print.php" method="post">

<input type="hidden" name="MAX_FILE_SIZE" value="524288" />

<fieldset><legend>Fill out the form to add a print to the catalog:</legend>

<p><b>Print Name:</b> <input type="text" name="print_name" size="30" maxlength="60" value="<?php if (isset($_POST['print_name'])) echo htmlspecialchars($_POST['print_name']); ?>" /></p>

<p><b>Image:</b> <input type="file" name="image" /></p>

<div><b>Artist:</b> 
<p><input type="radio" name="artist" value="existing" <?php if (isset($_POST['artist']) && ($_POST['artist'] == 'existing') ) echo ' checked="checked"'; ?> /> Existing =>
<select name="existing"><option>Select One</option>
<?php // Retrieve all the artists and add to the pull-down menu.
$q = "SELECT artist_id, CONCAT_WS(' ', first_name, middle_name, last_name) FROM artists ORDER BY last_name, first_name ASC";		
$r = mysqli_query ($dbc, $q);
if (mysqli_num_rows($r) > 0) {
	while ($row = mysqli_fetch_array ($r, MYSQLI_NUM)) {
		echo "<option value=\"$row[0]\"";
		// Check for stickyness:
		if (isset($_POST['existing']) && ($_POST['existing'] == $row[0]) ) echo ' selected="selected"';
		echo ">$row[1]</option>\n";
	}
} else {
	echo '<option>Please add a new artist.</option>';
}
mysqli_close($dbc); // Close the database connection.
?>
</select></p>

<p><input type="radio" name="artist" value="new" <?php if (isset($_POST['artist']) && ($_POST['artist'] == 'new') ) echo ' checked="checked"'; ?> /> New =>
First Name: <input type="text" name="first_name" size="10" maxlength="20" value="<?php if (isset($_POST['first_name'])) echo $_POST['first_name']; ?>" />
Middle Name: <input type="text" name="middle_name" size="10" maxlength="20" value="<?php if (isset($_POST['middle_name'])) echo $_POST['middle_name']; ?>" />
Last Name: <input type="text" name="last_name" size="10" maxlength="40" value="<?php if (isset($_POST['last_name'])) echo $_POST['last_name']; ?>" /></p>
</div>

<p><b>Price:</b> <input type="text" name="price" size="10" maxlength="10" value="<?php if (isset($_POST['price'])) echo $_POST['price']; ?>" /> <small>Do not include the dollar sign or commas.</small></p>

<p><b>Size:</b> <input type="text" name="size" size="30" maxlength="60" value="<?php if (isset($_POST['size'])) echo htmlspecialchars($_POST['size']); ?>" /> (optional)</p>

<p><b>Description:</b> <textarea name="description" cols="40" rows="5"><?php if (isset($_POST['description'])) echo $_POST['description']; ?></textarea> (optional)</p>

</fieldset>

<div align="center"><input type="submit" name="submit" value="Submit" /></div>
<input type="hidden" name="submitted" value="TRUE" />

</form>

</body>
</html>

Link to comment
Share on other sites

There are a bunch of errors I'm getting which seem to be related to the use of mysqli. I'm thinking its related to my use of mysql_connect instead of mysqli_connect, but the reason I'm not sure is

1. lack experience

2. the mysqli_connect.php looks.

// Add the artist to the database:
$q = 'INSERT INTO artists (first_name, middle_name, last_name) VALUES (?, ?, ?)';
$stmt = mysqli_prepare($dbc, $q);
mysqli_stmt_bind_param($stmt, 'sss', $fn, $mn, $ln);
mysqli_stmt_execute($stmt);

 

You need to use mysqli_connect instead of mysql_connect. The reason you get these error, are that mysqli_prepare is not finding a (mysqli)connection. This also gives you several more errors down the line. :)

  • Upvote 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...