I'm Trying to insert users into my database table users (membros) from my PHP page but for some reason it increments the values "membro_id) which is the primary key but no data is added to it. my pages have general header. The main one is:
<?php
define('DB_USER', 'chimasonline');
define('DB_PWD', 'root');
define('DB_NAME', 'chimasonline');
define('DB_HOST', 'localhost');
define('DB_DSN', 'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME);
my Members file from model is Member.php (I put the INSERT INTO queries in comment mode to show what I already tried):
<?php
// PHP and MySQL Project
// members table data class
class Members
{
public $debug = TRUE;
protected $db_pdo;
public $membersPerPage = 12;
public $howManyMembers = 0;
/*
* Returns array of arrays where each sub-array = 1 database row of Members
* @param int $offset [optional]
* @return array $row[] = array('title' => title, 'description' => description, etc.)
*/
public function getAllMembers($offset = 0)
{
$pdo = $this->getPdo();
$sql = 'SELECT * FROM `membros` ORDER BY `primeironome` LIMIT ' . $this->membersPerPage . ' OFFSET ' . $offset;
$stmt = $pdo->prepare($sql);
$stmt->execute();
$content = array();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$content[] = $row;
}
return $content;
}
/*
* Returns database row for 1 member
* @param int $id = member ID
* @return array $row[] = array('title' => title, 'description' => description, etc.)
*/
public function getDetailsById($id)
{
$pdo = $this->getPdo();
$sql = 'SELECT * FROM `membros` WHERE `produto_id` = ?';
$stmt = $pdo->prepare($sql);
$stmt->execute(array($id));
$result = $stmt->fetch(PDO::FETCH_ASSOC);
return $result;
}
/*
* Returns database row for 1 member
* @param string $email
* @return array $row[] = array('title' => title, 'description' => description, etc.)
*/
public function insertMember($data)
{
$pdo = $this->getPdo();
/* $sql = 'INSERT * INTO `membros`(`nome`, `endereco`, `cidade`, `estado_provincia`,
`codigo_postal`, `pais`, `telefone`, `balanco`, `email`, `password`)' . 'VALUES ([value-2],[value-3],
[value-4],[value-5],[value-6],[value-7],[value-8],[value-9],[value-10],[value-11])';
/* $sql = 'INSERT INTO `membros`( `nome`, `endereco`, `cidade`, `estado_provincia`,
`codigo_postal`, `pais`, `telefone`, `balanco`, `email`, `password`)' . 'VALUES ([value-2],[value-3],
[value-4],[value-5],[value-6],[value-7],[value-8],[value-9],[value-10],[value-11])';
/* $sql = 'INSERT INTO dbname . `membros`(`nome`, `endereco`, `cidade`, `estado_provincia`,
`codigo_postal`, `pais`, `telefone`, `balanco`, `email`, `password`)' . 'VALUES ([value-2],[value-3],
[value-4],[value-5],[value-6],[value-7],[value-8],[value-9],[value-10],[value-11])';
*/
/*
$sql = 'INSERT INTO `membros`(`primeironome`, `ultimonome`, `endereco`, `cidade`,
`provincia`, `codigopostal`, `pais`, `telefone`, `email`)'
. 'VALUES (:primeironome,:ultimonome,:endereco,:cidade,:provincia,:codigopostal,
:pais,:telefone,:email)';
/* $sql = 'INSERT INTO `chimasonline`.`membros` (`nome`, `endereco`, `cidade`, `estado_provincia`, `codigo_postal`, `pais`, `telefone`, `balanco`, `email`, `password`)'
. 'VALUES (:pimeironome, :endereco, :cidade, :provincia, :codigopostal, :pais, :telefone, :balanco, :email, :password);';
$sql = 'INSERT INTO `membros` (`nome`, `endereco`, `cidade`, `estado_provincia`, `codigo_postal`, `pais`, `telefone`, `balanco`, `email`, `password`)'
. 'VALUES (:nome, :endereco, :cidade, :estado_provincia, :codigo_postal, :pais, :telefone, :balanco, :email, :password);';
$sql = 'INSERT INTO `chimasonline`.`membros` (`nome`, `endereco`, `cidade`, `estado_provincia`, `codigo_postal`, `pais`, `telefone`, `balanco`, `email`, `password`)
' . 'VALUES (primeironome ,endereco ,cidade ,provincia ,codigopostal ,pais , telefone,balanco ,email,password )';
$sql = 'INSERT INTO `membros`(`nome`, `endereco`, `cidade`, `estado_provincia`,
`codigo_postal`, `pais`, `telefone`, `balanco`, `email`, `password`) VALUES = ?';
funcionou melhor esses dois tenho que explorar mais lembrar q n tinha parametro
$sql = 'INSERT INTO `chimasonline`.`membros` ( `primeironome`, `ultimonome`, `endereco`, `cidade`,
`provincia`, `codigopostal`, `pais`, `email`, `telefone`, `password`)
. 'VALUES ( :primeironome ,:ultimonome, :endereco , :cidade , :provincia, :codigopostal , :pais , :email, :telefone, :password)';'
$sql = 'INSERT INTO `chimasonline`.`membros` ( `nome`, `endereco`, `cidade`, `estado_provincia`, `codigo_postal`, `pais`, `password`)
VALUES ( hdd, f, bll, bgrio, 00000, qrf, password)';
// $sql = 'INSERT INTO `chimasonline`.`membros` (`nome`, `endereco`, `cidade`, `estado_provincia`, `codigo_postal`, `pais`, `telefone`, `balanco`, `email`, `password`)
' . 'VALUES ( )';
$sql = 'INSERT INTO `membros`(`primeironome`, `ultimonome`, `endereco`, `cidade`, `provincia`,
`codigopostal`, `pais`, `password`)' . 'VALUES ( ?,?,?,?,?,?,?,?,?,?);';
*/
$stmt = $pdo->prepare($sql);
$stmt->execute(array($data));
$result = $stmt->fetch(PDO::FETCH_ASSOC);
return $result;
}
/*
* Returns database row for 1 member
* @param string $email
* @return array $row[] = array('title' => title, 'description' => description, etc.)
*/
public function loginByName($email, $password)
{
$pdo = $this->getPdo();
$sql = 'SELECT * FROM `membros` WHERE `email` = ? AND `password` = ?';
$stmt = $pdo->prepare($sql);
$stmt->execute(array($email, $password));
$result = $stmt->fetch(PDO::FETCH_ASSOC);
return $result;
}
public function getHowManyMembers()
{
if (!$this->howManyMembers) {
$pdo = $this->getPdo();
$sql = 'SELECT COUNT(*) FROM `membros`';
$stmt = $pdo->prepare($sql);
$stmt->execute();
// fetches as a numeric array
$result = $stmt->fetch(PDO::FETCH_NUM);
$this->howManyMembers = $result[0];
}
return $this->howManyMembers;
}
/*
* Returns array of arrays where each sub-array = 1 database row of Members
* Searches name, address, city, state_province, country, email
* @param string $search
* @return array $row[] = array('title' => title, 'description' => description, etc.)
*/
public function getMembersByKeyword($search)
{
$search = strip_tags($search);
$search = str_ireplace(array("'",'-','"',';'), '', $search);
$search = "'%" . $search . "%'";
$pdo = $this->getPdo();
$sql = 'SELECT * FROM `membros` WHERE '
. '`primeironome` LIKE ' . $search . ' OR '
. '`cidade` LIKE ' . $search . ' OR '
. '`email` LIKE ' . $search . ' ORDER BY `primeironome`';
$stmt = $pdo->prepare($sql);
$stmt->execute();
$content = array();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$content[] = $row;
}
return $content;
}
/*
* Returns a safely quoted value
* @param string $value
* @return string $quotedValue
*/
public function pdoQuoteValue($value)
{
$pdo = $this->getPdo();
return $pdo->quote($value);
}
/*
* Returns a PDO connection
* If connection already made, returns that instance
* @return PDO $pdo
*/
public function getPdo()
{
if (!$this->db_pdo) {
if ($this->debug) {
$this->db_pdo = new PDO(DB_DSN, DB_USER, DB_PWD, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
} else {
$this->db_pdo = new PDO(DB_DSN, DB_USER, DB_PWD);
}
}
return $this->db_pdo;
}
}
My addmember file (adicionarmembro.php) is:
?php
// assign defaults
//$result='';
$mailStatus = '';
$data = array('email' => 'email',
'primeironome' => 'primeironome',
'ultimonome' => 'ultimonome',
'endereco' => 'endereco',
'cidade' => 'cidade',
'provincia' => 'provincia',
'codigopostal' => 'codigopostal',
'pais' => 'pais',
'telefone' => 'telefone',
// 'password' => 'password',
//'password_confirmacao' => 'password_confirmacao',
// 'dnano' => 0,
// 'dnmes' => 0,
// 'dndia' => 0,
// 'dn' => 0,
);
$error = array('email' => '',
'primeironome' => '',
'ultimonome' => '',
'endereco' => '',
'cidade' => '',
'provincia' => '',
'codigopostal' => '',
'pais' => '',
'telefone' => '',
'dn' => '',
);
if (isset($_POST['data'])) {
$data = $_POST['data'];
foreach ($data as $key => $value) {
$data[$key] = strip_tags($value);
}
if (isset($data['dnano']) && isset($data['dnmes']) && isset($data['dndia'])) {
try {
$bdateString = sprintf('%4d-%02d-%02d', $data['dnano'], $data['dnmes'], $data['dndia']);
$bdate = new DateTime($bdateString);
$today = new DateTime();
$interval16 = new DateInterval('P16Y');
$bdate16 = $today->sub($interval16);
if ($bdate > $bdate16) $error['dn'] = '<b class="error">Tem que ter pelo menos 16 anos!</b>';
} catch (Exception $e) {
$error['dn'] = '<b class="error">Data invalida</b>';
echo $e->getMessage();
exit;
}
} else {
$error['dn'] = '<b class="error">Data invalida</b>';
}
if (!preg_match('/^[a-z][a-z0-9._-]+@(\w+\.)+[a-z]{2,6}$/i', $data['email'])) {
$error['email'] = '<b class="error">endereco de email Invalido</b>';
}
if (!preg_match('/^[a-z0-9,. ]+$/i', $data['primeironome'])) {
$error['primeironome'] = '<b class="error">O nome deve apenas conter letras, numeros, espacos "," ou "."</b>';
}
if (!preg_match('/[a-z0-9,. ]/i', $data['ultimonome'])) {
$error['ultimonome'] = '<b class="error">O nome deve apenas conter letras, numeros, espacos "," or "."</b>';
}
if (!preg_match('/[a-z0-9,. ]/i', $data['endereco'])) {
$error['endereco'] = '<b class="error">O endereco deve apenas conter letras, numeros, espacos "," ou "."</b>';
}
if (!preg_match('/[a-z0-9,. ]/i', $data['cidade'])) {
$error['cidade'] = '<b class="error">A cidade deve apenas conter letras, numeros, espacos "," ou "."</b>';
}
if (!preg_match('/[a-z0-9,. ]/i', $data['provincia'])) {
$error['provincia'] = '<b class="error">A provincia deve apenas conter letras, numeros, espacos "," ou "."</b>';
}
if (!preg_match('/^[a-z][0-9][a-z] [0-9][a-z][0-9]$|^\d{5}(-\d{4})?$/i', $data['codigopostal'])) {
$error['codigopostal'] = '<b class="error"> codigo postal de Canada: A9A 9A9 <br />codigo postal de US: 99999 or 99999-9999<br />Se seu pais nao tem codigo postal digite 00000</b>';
}
if (!preg_match('/[a-z0-9,. ]/i', $data['pais'])) {
$error['pais'] = '<b class="error">O pais deve apenas conter letras, numeros, espacos "," ou "."</b>';
}
if (!preg_match('/^\+[0-9]{1,3} \d{3}-\d{3}-\d{4}/', $data['telefone'])) {
$error['telefone'] = '<b class="error">O numero do telephone deve star no formato +CC AAA-CCC-DDDD</b>';
}
// Verifica se o formulario e valido
$isValid = TRUE;
foreach ($error as $value) {
if ($value) {
$isValid = FALSE;
break;
}
}
if ($isValid) {
require_once('PHPMailer/class.phpmailer.php');
require './Model/Members.php';
$memberTable = new Members();
$address = "****@****.com";
$newName = $data['primeironome'] . ' ' . $data['ultimonome'];
$mail = new PHPMailer(); // defaults to using php "mail()"
$body = 'Seja bemvindo a Chimas Online ' . $newName . '!'
. '<br />Para confirmar o seu email, apenas responde a este email e nos faremos o resto...'
. '<br />Desfrute!'
. '<br /> Clique em <a href = www.irenejovem.com> e continue a explorar os nossos produtos www.irenejovem.com';
$mail->AddReplyTo($address,"ChimasOnline");
$mail->SetFrom($address,"ChimasOnline");
$mail->AddAddress($data['email'], $newName);
$mail->Subject = 'Confirmacao de novo membro da ChimasOnline';
$mail->AltBody = "Para ver a mensagem, use por favor um visualizador de email HTML compativel!"; // optional, comment out and test
$mail->MsgHTML($body);
if(!$mail->Send()) {
$mailStatus = 'Erro ao enviar o email: ' . $mail->ErrorInfo;
} else {
$mailStatus = 'Email de confirmacao Enviado! Verifique o seu email e clique no link de confirmacao para efectivar o seu registro!';
$result = $memberTable->insertMember($data);
}
}
}
?>
<div class="content">
<br/>
<div class="product-list">
<h2>Cadastre-se na nossa pagina</h2>
<br/>
<b>Por favor, preencha a sua informacao.</b>
<br/>
<br/>
<?php if ($mailStatus) echo '<br /><b class="confirm">', $mailStatus, '</b><br />'; ?>
<br />
<form action="?page=adicionarmembro" method="POST">
<p>
<label>Data de Nascimento: </label>
<select name="data[dnano]">
<?php if ($data['dnano']) { echo '<option>', $data['dnano'], '</option>'; } ?>
<?php $year = date('Y'); ?>
<?php for($x = $year; $x > ($year - 120); $x--) { ?>
<option><?php echo $x; ?></option>
<?php } ?>
</select>
<select name="data[dnmes]">
<?php
$month = array(1 => 'Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez');
if ($data['dnmes']) {
printf('<option value="%02d">%s</option>',
$data['dnmes'], $month[(int) $data['dnmes']]);
}
for($x = 1; $x <= 12; $x++) {
printf('<option value="%02d">%s</option>', $x, $month[$x]);
echo PHP_EOL;
}
?>
</select>
<select name="data[dndia]">
<?php if ($data['dndia']) { echo '<option>', $data['dndia'], '</option>'; } ?>
<?php for($x = 1; $x < 32; $x++) { ?>
<option><?php echo $x; ?></option>
<?php } ?>
</select>
<?php if ($error['dn']) echo '<p>', $error['dn']; ?>
<p>
<label>Email: </label>
<input type="text" name="data[email]" value="<?php echo htmlspecialchars($data['email']); ?>" />
<?php if ($error['email']) echo '<p>', $error['email']; ?>
<p>
<p>
<label>Primeiro Nome: </label>
<input type="text" name="data[primeironome]" value="<?php echo $data['primeironome']; ?>" />
<?php if ($error['primeironome']) echo '<p>', $error['primeironome']; ?>
<p>
<p>
<label>Ultimo Nome: </label>
<input type="text" name="data[ultimonome]" value="<?php echo $data['ultimonome']; ?>" />
<?php if ($error['ultimonome']) echo '<p>', $error['ultimonome']; ?>
<p>
<p>
<label>Endereco: </label>
<input type="text" name="data[endereco]" value="<?php echo $data['endereco']; ?>" />
<?php if ($error['endereco']) echo '<p>', $error['endereco']; ?>
<p>
<p>
<label>Cidade: </label>
<input type="text" name="data[cidade]" value="<?php echo $data['cidade']; ?>" />
<?php if ($error['cidade']) echo '<p>', $error['cidade']; ?>
<p>
<p>
<label>Provincia: </label>
<input type="text" name="data[provincia]" value="<?php echo $data['provincia']; ?>" />
<?php if ($error['provincia']) echo '<p>', $error['provincia']; ?>
<p>
<p>
<label>Codigo Postal: </label>
<input type="text" name="data[codigopostal]" value="<?php echo $data['codigopostal']; ?>" />
<?php if ($error['codigopostal']) echo '<p>', $error['codigopostal']; ?>
<p>
<p>
<label>Pais: </label>
<input type="text" name="data[pais]" value="<?php echo $data['pais']; ?>" />
<?php if ($error['pais']) echo '<p>', $error['pais']; ?>
<p>
<p>
<label>Telefone: </label>
<input type="text" name="data[telefone]" value="<?php echo $data['telefone']; ?>" />
<?php if ($error['telefone']) echo '<p>', $error['telefone']; ?>
<p>
<p>
<input type="reset" name="data[clear]" value="Clear" class="button"/>
<input type="submit" name="data[submit]" value="Submit" class="button marL10"/>
<p>
</form>
</div><!-- product-list -->
</div>
my users table is
but it shows like: users table after the INSERT command
Please help, I'm desperated.