无法将值插入数据库

时间:2015-04-23 18:50:23

标签: php html mysql database web

我正在尝试将这些值插入到我的数据库中,但我遇到了一些问题。我不知道为什么。下面是需要插入的值,我为此编写的当前代码如下。

<?php
include ('db.php');

$cfname=$_POST['c_firstname']
$clname=$_POST['c_lastname'];
$address=$_POST['c_address'];
$postcode=$_POST['c_postcode'];
$mobno=$_POST['c_mobno'];
$emailad=$_POST['c_email'];
$expsttime=$_POST['e_sttime'];
$expendtime=$_POST['e_endtime'];
$expname=$_POST['experience'];
$car1=$_POST['car'];
$driver1=$_POST['driver'];
$host1=$_POST['host'];




$addnewbookingSQL="INSERT into experienceBooking 
(firstName, lastName, address, postcode, mobNo, emailAd, expStTime, expEndTime, experienceName, car, driver, host)
values ('".$cfname."','".$clname."','".$address."','".$postcode."','".$mobno."','".$emailad."','".$expsttime."','".$expendtime."','".$expname."','".$car1."','".$driver1."','".$host1."')";
$exeaddnewbookingSQL=mysql_query($addnewbookingSQL);



?>

我不确定我的SQL是否正确查询,因为它在执行此代码时显示空白屏幕。

3 个答案:

答案 0 :(得分:1)

在您提供的代码中,您有语法错误;您在;之后遗漏了$cfname=$_POST['c_firstname']

但是,您使用的是deprecated functions,应该停止使用它们。我建议使用PDO,但由于您似乎最熟悉mysql_函数,因此我使用较新的mysqli_*函数和prepared statements为您提供了解决方案。

// Connect to database
$connection = new mysqli('server', 'user', 'password', 'db');

// Check connection for error
if(mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

// Prepare the insert
$stmt = $connection->prepare("INSERT INTO experienceBooking (firstName, lastName, address, postcode, mobNo, emailAd, expStTime, expEndTime, experienceName, car, driver, host) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

// Bind values
$stmt->bind_param('ssssssssssss', $_POST['c_firstname'], $_POST['c_lastname'], $_POST['c_address'], $_POST['c_postcode'], $_POST['c_mobno'], $_POST['c_email'], $_POST['e_sttime'], $_POST['e_endtime'], $_POST['experience'], $_POST['car'], $_POST['driver'], $_POST['host']);

// Execute prepared statement
$stmt->execute();

// Close statement and connection
$stmt->close();
$connection->close();

答案 1 :(得分:0)

你在第4行错过了分号:

$cfname=$_POST['c_firstname'];

提示:

我总是在编写代码时在我的php脚本顶部添加以下内容:

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

以上内容将帮助您调试代码,特别是获取有错误的行 在生产模式下进行注释。

答案 2 :(得分:0)

嗯,你没有在第4行用分号结束..

此外,您应该像这样修改代码。

$addnewbookingSQL="INSERT into experienceBooking values ('".mysql_real_escape_string($cfname)."','".mysql_real_escape_string($clname)."','".mysql_real_escape_string($address)."','".mysql_real_escape_string($postcode.)"','".mysql_real_escape_string($mobno)."','".mysql_real_escape_string($ mailad)."','".mysql_real_escape_string($expsttime)."','".mysql_real_escape_string($expendtime)."','".mysql_real_escape_string($expname)."','".mysql_real_escape_string($car1)."','".mysql_real_escape_string($driver1)."','".mysql_real_escape_string($host1)."')";
if($exeaddnewbookingSQL=mysql_query($addnewbookingSQL));

else
    echo mysql_error();

上面代码mysql_real_escape_string中的哪个用于保护sql注入,mysql_error用于查询中是否有任何错误。