2017-08-20 7 views
-1

に接続していない:私は、PHPは、このコードは、単純なHTMLフォームから情報を取得し、MySQLデータベースにポストすることになっているMySQLの

<html> 
 

 
<head> 
 
<title>Cadastro de Cinema</title> 
 
<head> 
 

 
<body> 
 
<?php 
 
$host = "localhost"; 
 
$user = "root"; 
 
$pass = ""; 
 
$banco = "cinema"; 
 
$con = @mysqli_connect($host, $user, $pass, $db) or die(mysql_error()); 
 

 
?> 
 

 
<?php 
 

 
$email= isset($_POST['email']) ? $_POST['email'] : ''; 
 
$senha= isset($_POST['senha']) ? $_POST['senha'] : ''; 
 
$nome= isset($_POST['nome']) ? $_POST['nome'] : ''; 
 
$rua= isset($_POST['rua']) ? $_POST['rua'] : ''; 
 
$bairro= isset($_POST['bairro']) ? $_POST['bairro'] : ''; 
 
$numero= isset($_POST['numero']) ? $_POST['numero'] : ''; 
 
$cidade= isset($_POST['cidade']) ? $_POST['cidade'] : ''; 
 
$sql = mysqli_query($con, "INSERT INTO cinema(email, senha, nome, rua, bairro, numero, cidade) 
 
VALUES ('$email', '$senha', '$nome', '$rua', '$bairro', '$numero', '$cidade')"); 
 

 
echo "OK"; 
 
?> 
 
</body> 
 

 
</html>

私はそれをテストする場合"OK"エコーを取得しますが、情報はmySQLデータベースにありません。どうなり得るか?

+2

ありがとうございます。接続が失敗した場合は、エラーを隠してはいけません。あなたはSQLインジェクションに開放されています。あなたのクエリとプリペアドステートメントのパラメータ化を見てください。また、mysql_errorはmysqlエラーを助けません。 – chris85

答えて

0

を行います。したがって、このクエリでテーブル/データ型がサポートされているかどうかを確認できます。これを試してください:

<html> 

<head> 
<title>Cadastro de Cinema</title> 
<head> 

<body> 
<?php 
$host = "localhost"; 
$user = "root"; 
$pass = ""; 
$banco = "cinema"; 
$con = @mysqli_connect($host, $user, $pass, $banco) or die("Could not connect to database. " . mysqli_connect_error()); 
?> 

<?php 

$email= isset($_POST['email']) ? $_POST['email'] : ''; 
$senha= isset($_POST['senha']) ? $_POST['senha'] : ''; 
$nome= isset($_POST['nome']) ? $_POST['nome'] : ''; 
$rua= isset($_POST['rua']) ? $_POST['rua'] : ''; 
$bairro= isset($_POST['bairro']) ? $_POST['bairro'] : ''; 
$numero= isset($_POST['numero']) ? $_POST['numero'] : ''; 
$cidade= isset($_POST['cidade']) ? $_POST['cidade'] : ''; 
$sql = mysqli_query($con, "INSERT INTO cinema(email, senha, nome, rua, bairro, numero, cidade) 
VALUES ('$email', '$senha', '$nome', '$rua', '$bairro', '$numero', '$cidade')"); 

echo "OK"; 
?> 
</body> 

</html> 

単純なデータベース表Iに使用される:

CREATE TABLE `cinema` (
    `email` varchar(50) NOT NULL, 
    `senha` varchar(50) NOT NULL, 
    `nome` varchar(50) NOT NULL, 
    `rua` varchar(50) NOT NULL, 
    `bairro` varchar(50) NOT NULL, 
    `numero` varchar(50) NOT NULL, 
    `cidade` varchar(50) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

は、あなたが学ぶのを助けることはありません `@`を使用して停止してください

0

あなたはここに

$banco = "cinema"; 
    $con = @mysqli_connect($host, $user, $pass, $db) or die(mysql_error()); 

あなたのDBの名前が$bancoですが、あなたはあなたのクエリで$dbを使用しているエラーが発生しています。あなたは、変数$sqlmysqli_queryを割り当てた

$con = @mysqli_connect($host, $user, $pass, $banco) or die(mysql_error()); 

に変更し、これは、それが実行されていないことを意味します。

<html> 
<head> 
<title>Cadastro de Cinema</title> 
<head> 
<body> 
<?php 
$host = "localhost"; 
$user = "root"; 
$pass = ""; 
$banco = "cinema"; 
$con = @mysqli_connect($host, $user, $pass, $db) or die(mysql_error()); 
?> 

<?php 
$email= isset($_POST['email']) ? $_POST['email'] : ''; 
$senha= isset($_POST['senha']) ? $_POST['senha'] : ''; 
$nome= isset($_POST['nome']) ? $_POST['nome'] : ''; 
$rua= isset($_POST['rua']) ? $_POST['rua'] : ''; 
$bairro= isset($_POST['bairro']) ? $_POST['bairro'] : ''; 
$numero= isset($_POST['numero']) ? $_POST['numero'] : ''; 
$cidade= isset($_POST['cidade']) ? $_POST['cidade'] : ''; 
mysqli_query($con, "INSERT INTO cinema(email, senha, nome, rua, bairro, numero, cidade) 
VALUES ('$email', '$senha', '$nome', '$rua', '$bairro', '$numero', '$cidade')"); 
//I have removed the assignment  
echo "OK"; 
?> 
</body> 

</html> 

をやるか、操作が成功したかどうかを確認したい場合は、あなたがここにあなたのデータベースを提出する場合、それは良いだろう

$sql=mysqli_query($con, "INSERT INTO cinema(email, senha, nome, rua, bairro, numero, cidade) 
VALUES ('$email', '$senha', '$nome', '$rua', '$bairro', '$numero', '$cidade')"); 

if($sql) 
{ 
    //do something 
} 
+0

私はあなたのウサギの穴を見下ろすと思いますが、それを避けるための一歩は 'mysql_error()'が 'mysqli'では動作しないことです。 – chris85

関連する問題