2017-12-12 25 views
0

phpとphpmyadminを使用して登録を作成しようとしています。私はポスト作業を持っているし、テーブルにデータを挿入するも動作します。mysqli_queryがPHPで動作しません

$result = mysqli_query($conn, $sql); 

次のコードを使用してデバッグしようとしましたが、エラーは発生しません。これは私のregister.phpファイルです。

require_once('config1.php'); 

if(!$conn): 
die('Connect Error (' . mysqli_connect_errno() . ') '. 
mysqli_connect_error()); 
endif; 

if(isset($_POST) && !empty($_POST)) { 
    $username = $_POST['username']; 
    $email = $_POST['email']; 
    $password = $_POST['password']; 

    $sql = "INSERT INTO 'zz_login' (username, email, password) VALUES ('$username', '$email', '$password')"; 
    $result = mysqli_query($conn, $sql); 
    if($result) { 
     echo "user registration successful"; 
    } else { 
     mysqli_error($conn); 
    } 
} 
; 

これは私の設定ファイル

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

$conn = mysqli_connect("localhost", "username", "password", "database"); 
if (!$conn) { 
die("could not connect" . mysqli_connect_error($conn)); 
} 

ない間違っているのかわからあり、実際にいくつかの助けをいただければ幸いです。前もって感謝します。

+0

返されるエラーは何ですか? – Spads

+0

返されるエラーはありません。これは私がそう失われた理由です –

+0

[リトル・ボビー](http://bobby-tables.com/)は言っています** [あなたはSQLインジェクション攻撃の危険にさらされているかもしれません](https://stackoverflow.com/q/60174 /)**。 [パラメータ化されたクエリ](https://stackoverflow.com/a/4712113/5827005)で[Prepared Statements](https://en.wikipedia.org/wiki/Prepared_statement)について学んでください。パラメータ化されていないクエリを使用するよりも、非常に簡単で、きれいで、安全であるように、私は[PDO]を勧めました(https://github.com/GrumpyCrouton/GrumpyPDO)。また、[この記事](https://phpdelusions.net/pdo/mysqli_comparison)は、 'MySQLi'と' PDO'を選択するのに役立ちます – GrumpyCrouton

答えて

2

あなたは、SQLエラーが発生していると、あなたは、単にこれを試してmysqli_errorの前にechoコマンドを忘れてしまったように見える:

if($result) { 
    echo "user registration successful"; 
} else { 
    echo mysqli_error($conn); 
} 
+0

今このエラーが返されています 不正な整数値:1行目の 'password'列に 'pass123'があります pass123はユーザーの詳細を作成するときに入力したパスワードです –

+0

これはあなたのtalbeが発生する場合はzz_login特に "タイプが間違っていて、整数ではなく文字列でなければなりません。テーブルを変更する必要があります。 – cabanni

+0

ありがとう、これはうまくいった:) –

0

あなたはPDOを使用する必要があり、それが優れている、コードは、次のとおりです。

// define config options, you can save this code into one file and require it 
 

 
$config = [ 
 
\t 'username' => 'root', 
 
\t 'password' => '', 
 
\t 'database' => 'site' \t 
 
]; 
 

 
// make a connnection function for easily accessing it 
 
function connect($config) 
 
{ 
 
\t try{ 
 
\t \t $conn = new \PDO('mysql:host=localhost;dbname=' .$config['database'], $config['username'], $config['password']); 
 

 
\t \t $conn->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); 
 

 
\t \t return $conn; 
 
\t } 
 
\t catch(Exception $e){ 
 
\t \t return false; 
 
\t } 
 

 
}// end connect() 
 

 
// this is the query function, at bottom I'll show how to use 
 
function query($query, $bindings, $conn) 
 
{ 
 
\t $stmt = $conn->prepare($query); 
 
\t $stmt->execute($bindings); 
 

 
\t return ($stmt->rowCount() > 0) ? $stmt : false ; 
 
} 
 

 

 
// Usage 
 

 
// require 
 
require 'databases.php'; 
 

 
// Connect to the db 
 
$conn = connect($config); 
 

 
if (!$conn) die("Could not connect."); 
 

 
// define an array for status 
 
$data = []; 
 

 
if($_SERVER['REQUEST_METHOD'] === 'POST') { 
 
    // get needed form 
 
    $username = $_POST['username']; 
 
    $email = $_POST['email']; 
 
    $password = $_POST['password']; 
 
    
 
    // here mysql queries, any of them, super easy and secured 
 
    query(
 
     "INSERT INTO zz_login(username, email, password) 
 
     VALUES (:username, :email, :password"),[ 
 
     'username' => $username, 
 
     'email' => $email, 
 
     'password' => $password 
 
     ], 
 
     $conn); 
 
    // status array 
 
    $data['status'] = "user registration successful"; 
 
    } else { 
 
     $data['status'] = 'Failure'; 
 
     
 
     if ($data) { 
 
\t \t \t  extract($data); 
 
\t \t  } 
 
    } 
 
}

+0

これはlaravelと関係がありますか? –

+0

はい、それはlaravelに近いです – Avagadro

+0

目標はこれを使用することですが、私はそれを学ぶ時間がありません。私は1月7日までに構築するウェブサイトを持っており、ラーベル学習のストレスは欲しくない –

関連する問題