【问题标题】:Query Fails whenever I want to insert每当我想插入时查询失败
【发布时间】:2016-08-13 06:33:14
【问题描述】:

每次我通过下面的代码提交表单时,我都会收到“查询失败”,但我似乎找不到 错误

您的 SQL 语法中有一个错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 near 'order (pass, phone, fname, lname) VALUES('test@yahoo.com','060606060606','James'' 在第 1 行

请有人帮助我。

<?php
//Start session
session_start();

//Include database connection details
require_once('../db/config.php');

//Array to store validation errors
$errmsg_arr = array();

//Validation error flag
$errflag = false;

//Connect to mysql server
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if(!$link) {
    die('Failed to connect to server: ' . mysql_error());
}

//Select database
$db = mysql_select_db(DB_DATABASE);
if(!$db) {
    die("Unable to select database");
}

//Function to sanitize values received from the form. Prevents SQL injection
function clean($str) {
    $str = @trim($str);
    if(get_magic_quotes_gpc()) {
        $str = stripslashes($str);
    }
    return mysql_real_escape_string($str);
}

//Sanitize the POST values
$pass = clean($_POST['pass']);
$phone = clean($_POST['phone']);
$fname = clean($_POST['fname']);
$lname = clean($_POST['lname']);

//Create INSERT query
$qry = "INSERT INTO order (pass, phone, fname, lname) VALUES('$pass','$phone','$fname','$lname')";
$result = @mysql_query($qry);

//Check whether the query was successful or not
if($result) {
    header("location: success.php");
    exit();
}else {
    die("Query failed");
}
?>

我还尝试检查用户输入是否为空并且没问题但没有插入。

【问题讨论】:

  • 将您的 die 更改为 die("Query failed: " . mysql_error()) 以查看实际错误。
  • 请避免使用mysql。它已被弃用。使用 mysqli_PDO
  • 看看,更新这行$result = @mysql_query($qry) or die("Query failed: " . mysql_error());后出现了什么错误
  • @MarkusLaire,我在应用您的指令后收到此错误。查询失败:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法,以便在第 1 行的 'order (pass, phone, fname, lname) VALUES('test@yahoo.com','060606060606','James'' 附近使用

标签: php sql insert


【解决方案1】:

名称“订单”是 MySQL 保留关键字。

使用反引号将表名括起来,

$qry = "INSERT INTO `order` (pass, phone, fname, lname) VALUES('$pass','$phone','$fname','$lname')";

                      ^ enlcose table name with backtick

反引号

【讨论】:

  • 我认为这已经解决了问题,但还有另一个错误。查询失败:字段“member_id”没有默认值。
  • 那是不同的问题。 @NoreplyNoreply。 member_id 是否具有 primary_key 和自动增量。
  • 是的,现在问题不同了,我已经标记了你的答案。注意:member_id 也有一个主键和自动递增。
  • member_id int(11) UNSIGNED NOT NULL,
  • 设为 NULL 并检查 @NoreplyNoreply
【解决方案2】:

并使用“mysqli”

$qry = "INSERT INTO `order` (pass, phone, fname, lname) VALUES('$pass','$phone','$fname','$lname')";
$result = mysqli_query($conn,$qry);

【讨论】:

  • 好的。我去做。谢谢
猜你喜欢
  • 1970-01-01
  • 2016-06-21
  • 2014-11-01
  • 1970-01-01
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多