Outros já lhe deram respostas. Para adicionar, você está usando aspas em torno dos nomes das colunas que devem ser acentos graves ou remover as aspas completamente.
Mudar:
INSERT INTO orders ('name', 'tacoOrder')
^ ^ ^ ^
para
INSERT INTO orders (`name`, `tacoOrder`)
ou
INSERT INTO orders (name, tacoOrder)
ou como resposta completa:
$name = $_POST['name'];
$tacoOrder = $_POST['tacoOrder'];
$query = "INSERT INTO orders (`name`, `tacoOrder`) VALUES ('$name', '$tacoOrder')";
Nota:Não são necessários acentos graves, mas as aspas simples para os nomes das colunas não podem ser usadas. É apenas uma força do hábito que eu mesmo use backticks em torno dos nomes das colunas.
Além disso, este
$mysql_close();
não deve ter um $
na frente de mysql_close
mas $link
dentro dos colchetes:Mude para
mysql_close($link);
No entanto, conforme observado pelo Sr. Alien, a variável para
mysql_close()
é opcional (Obrigado por isso) Você também tem um
)
ausente em if(!mysql_query($query)
que deve ser lido como if(!mysql_query($query))
Considere mudar para
mysqli_*
funções com instruções preparadas ou PDO. O mysql_*
funções estão obsoletas e serão excluídas de versões futuras. reescrita completa:(testado e trabalhando no meu servidor)
<?php
define('DB_NAME', 'tacoPractice');
define('DB_USER', 'root');
define('DB_PASS', 'root');
define('DB_HOST', 'localhost');
$link = mysql_connect(DB_HOST, DB_USER, DB_PASS);
if(!$link)
{
die('Could not connect to database: ' . mysql_error());
}
$db_select = mysql_select_db(DB_NAME);
if(!$db_select)
{
die('Can\'t use ' . DB_NAME . ': ' . mysql_error());
}
echo "HOLY EFF";
$name = $_POST['name'];
$tacoOrder = $_POST['tacoOrder'];
$query = "INSERT INTO orders (name, tacoOrder) VALUES ('$name', '$tacoOrder')";
if(!mysql_query($query))
{
die("DAMMIT");
}
else{ echo "Success"; }
mysql_close();
?>
Você também pode usar este método que é um pouco diferente:
$query = mysql_query("INSERT INTO orders (name, tacoOrder) VALUES ('$name', '$tacoOrder')");
if (!$query) {
die('Invalid query: ' . mysql_error());
}
else{ echo "Success"; }
Notas de rodapé:
Você corre o risco de obter entradas de dados vazias porque não está verificando se seus elementos de formulário são deixados vazios.
Você pode usar uma instrução condicional para o efeito de:
if(!empty($_POST['name']) || !empty($_POST['tacoOrder']))
{
// continue with code processing
}
Além disso, use o que Awlad menciona em
sua resposta
em relação ao uso de mysql_real_escape_string()
Você também pode ler um bom artigo aqui sobre SO
Como posso evitar injeção de SQL no PHP?
Aqui está um (básico)
mysqli_*
método baseado com o mysqli_real_escape_string()
função e uma instrução condicional para verificar se algum dos campos está vazio. Se um dos campos for deixado em branco, a consulta não será executada.
<?php
define('DB_NAME', 'tacoPractice');
define('DB_USER', 'root');
define('DB_PASS', 'root');
define('DB_HOST', 'localhost');
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASS);
if(!$link)
{
die('Could not connect to database: ' . mysqli_error());
}
$db_select = mysqli_select_db($link,DB_NAME);
if(!$db_select)
{
die('Can\'t use ' . DB_NAME . ': ' . mysqli_error());
}
echo "HOLY EFF";
$name = mysqli_real_escape_string($link,$_POST['name']);
$tacoOrder = mysqli_real_escape_string($link,$_POST['tacoOrder']);
if(!empty($_POST['name']) || !empty($_POST['tacoOrder'])){
$query = "INSERT INTO orders (name, tacoOrder) VALUES ('$name', '$tacoOrder')";
if(!mysqli_query($link,$query))
{
die("DAMMIT");
}
else{ echo "Success"; }
mysqli_close($link);
}
?>