2017-06-22 119 views
1

我试图从简单的注册表格中插入数据到MySQL中。我有我的数据库托管在亚马逊AWS RDS上,使用DBeaver编辑它。当我运行代码时,我得到以下内容无法弄清楚为什么我的PHP没有插入到MySQL DB中

affected_rows。“插入到数据库中的数据”。 } else {echo“发生了 错误,未添加项目。”; } $ db-> close(); ?>

我该如何解决这个问题?我的PHP错了吗?我很疑惑我是否可以使用MySQLi,我将如何确定?我假设Amazon RDS MySQL兼容。

<?php 
// create short variable names 
$name=$_POST['name']; 
$birthdate=$_POST['birthdate']; 
$email=$_POST['email']; 
$password=$_POST['password']; 
$address=$_POST['address']; 
$city+$_POST['city']; 

if (!get_magic_quotes_gpc()) { 
    $name = addcslashes($name); 
    $birthdate = addslashes($birthdate); 
    $email = addcslashes($email); 
    $password = addcslashes($password); 
    $address = addcslashes($address); 
    $city = addcslashes($city); 
} 

$host='xxxxxx' 
$user='admin' 
$password='xxxxx' 
$dbname='users' 
@ $db = mysqli_connect($host,$user,$password,$dbname) 

if (mysqli_connect_errno()) { 
    echo 'Error: Could not connect to database. Please try again later.'; 
    exit; 
} 

// Execute the query 
$query = "INSERT INTO vestorinfo (name,birthdate,email,password,address,city) 
    VALUES ('$_POST[name]','$_POST[birthdate]','$_POST[email]','$_POST[password]','$_POST[address]','$_POST[city]')"; 
$result = mysqli_query($query) 
     or die ("Couldn't execute query."}; 

if ($result) { 
    echo $db->affected_rows." data inserted into database."; 
} else { 
    echo "An error has occurred. The items were not added."; 
} 

$db->close(); 
?> 

这里是从HTML页面的形式

<div id="registerform"> 
    <form action="php/registerprocess.php" method="post" class="form-horizontal"> 

<fieldset> 

<!-- Form Name --> 

<!-- Text input--> 
<div class="form-group"> 
    <label class="col-md-4 control-label" for="name">Name</label> 
    <div class="col-md-4"> 
    <input id="name" name="name" placeholder="Your name" class="form-control input-md" required="" type="text"> 

    </div> 
</div> 

<!-- Text input--> 
<div class="form-group"> 
    <label class="col-md-4 control-label" for="birthdate">Birth Date</label> 
    <div class="col-md-4"> 
    <input id="birthdate" name="birthdate" placeholder="07/04/1950" class="form-control input-md" required="" type="text"> 

    </div> 
</div> 

<!-- Text input--> 
<div class="form-group"> 
    <label class="col-md-4 control-label" for="email">Email</label> 
    <div class="col-md-4"> 
    <input id="email" name="email" placeholder="" class="form-control input-md" required="" type="text"> 

    </div> 
</div> 

<!-- Password input--> 
<div class="form-group"> 
    <label class="col-md-4 control-label" for="password">Password</label> 
    <div class="col-md-4"> 
    <input id="password" name="password" placeholder="" class="form-control input-md" required="" type="password"> 
    <span class="help-block">Must be &gt;= 8 characters including at least 1 number</span> 
    </div> 
</div> 

<!-- Text input--> 
<div class="form-group"> 
    <label class="col-md-4 control-label" for="email">Address</label> 
    <div class="col-md-4"> 
    <input id="address" name="address" placeholder="" class="form-control input-md" required="" type="text"> 
    </div> 
</div> 

<!-- Text input--> 
<div class="form-group"> 
    <label class="col-md-4 control-label" for="email">City</label> 
    <div class="col-md-4"> 
    <input id="city" name="city" placeholder="" class="form-control input-md" required="" type="text"> 
    </div> 
</div> 
</div> 

</fieldset> 
+3

它看起来像你的PHP没有运行,为什么不回显真正的错误? –

+1

您已经开放SQL注入。由于您使用的是mysqli,请利用[prepared statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和[bind_param](http://php.net/手动/ EN/mysqli的-stmt.bind-param.php)。这将解决您可能遇到的任何烦人的引用问题。同时检查一路上的mysqli错误。 – aynber

+0

'$ city + $ _ POST ['city'];'应该是'$ city = $ _ POST ['city'];'在设置所有这些值之后,为什么要回退到在插入中使用$ _POST值? –

回答

1

你的代码是在SQL注入风险,你应该使用PARAM结合,而不是var当成$ _ POST 反正尊重你质疑失踪插入值 可能因为涉及到你指的$ _ POST指数在错误的方法其实

例如:使用级联,你应该

$query = "INSERT INTO vestorinfo (name,birthdate,email,password,address,city) 
     VALUES ('" . $_POST['name'] ." , " . $_POST['birthdate'] .", " . 
     $_POST['email'] . "," . $_POST['password'] . "," . 
     $_POST['address'] . "," . $_POST['city'] . ")"; 
+0

虽然还有很多其他的问题,比如PHP甚至没有被执行。 – chris85

+0

@ chris85。可能 。我只是第一次瞥见。 – scaisEdge

+0

我想在我开始处理注入问题之前至少得到PHP执行 – PhilFredo

相关问题