INSERT INTO语法错误但通常应该有效

时间:2011-11-25 20:32:08

标签: php mysql

插入到mysql时,我反复收到语法错误,通常这种方法很好,但我似乎无法让它工作。我可以回应变量没问题,但由于某种原因我不能插入它们。

变量(会话变量从另一个页面带来)

session_start();
$name=$_SESSION['bName'];
$email=$_SESSION['email'];
$ship_address = $_SESSION['sAddress'];
$voucher=$_SESSION['voucher'];
$sku=$_SESSION['sku'];
$credit_card=$_POST['credit_card'];
$security_code=$_POST['security_code'];
$payment_type=$_POST['payment_type'];
$cc_number=substr($credit_card, 0, 4) . str_repeat('x', (strlen($credit_card) - 4)) . substr($credit_card, -4, 4);
$phone=$_SESSION['billPhone'];
$status="Redeemed";
$date = date('Y/m/d');
$tracking ="";

插入查询

//Insert Queries
$sqlInsert = "INSERT INTO `customers`(`name`, `email`, `address`, `phone`, `sku`, `creditcard`, `securitycode`, `paymenttype`, `voucher`, `purchase_id`, `tracking`, `status`, `date_recieved`) 

VALUES( $name, $email, $ship_address, $phone, $sku, $credit_card, $security_code, $payment_type, $voucher, $purchase_id, $tracking, $status, $date)";
    mysql_query($sqlInsert) or die ('Error Inserting into database' . mysql_error());

我也试过

VALUES( '$name', '$email', '$ship_address', '$phone', '$sku', '$credit_card', '$security_code', '$payment_type', '$voucher', '$purchase_id', '$tracking', '$status', '$date')

但它不起作用。我得到的错误是

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'lastname, fahad@semail.com, 22 toronto ont l6a0l4, 416-123-4567, 1001234, 1234567' at line 1

有什么想法吗?

由于

4 个答案:

答案 0 :(得分:1)

必须引用所有字符串值。

VALUES("'.$name.'", "'.$email.'" ...

答案 1 :(得分:1)

这样做,所以字段是分隔的:

VALUES( '$name', '$email', ...

检查您的错误消息,看看您当前正在生成什么样的垃圾。

答案 2 :(得分:1)

您可以使用PDO代替create prepared statements。然后你不必担心像drdwilcox的例子'Jerry''那样逃避你的价值观。它还有助于作为针对SQL注入攻击的对策。

答案 3 :(得分:0)

我几乎可以保证你的名字字段中有一个单引号。如果要在SQL中的字符串字段中放置单引号,则必须将其加倍:'Jerry''''

您需要'$name'版本。