2016-12-02 55 views
-1

此代码将从另一个php代码中接收id和区域,我确定它会正确接收它们。此代码的目的是更新id等于用户输入的id的区域。我运行代码,从这个语句中得到了SQL语法错误。更新中的SQL语法错误

$sql = "UPDATE complain SET area = ".$area."WHERE num = ".$id.""; 

任何人都知道什么是错的?

<?php 

$area = $_GET['area']; 
$id = $_GET['id']; 

echo $area; 
echo $id; 

//$Area = $_POST['variable']; 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "sfa"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "UPDATE complain SET area = ".$area."WHERE num = ".$id.""; 



if ($conn->query($sql) === TRUE) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

$conn->close(); 

?> 
+1

我猜''区域'是一个字符串,而不是一个整数。然后它应该被包裹在单引号中。你真正的问题是'WHERE'关键字之前没有空格。使它成为'... SET area ='“。$ area。”'WHERE ...' – Qirel

+3

另外,您应该使用预准备语句,您很容易受到SQL注入攻击。 –

回答

0

尝试使用这个查询。它工作正常,更新记录 -

“更新抱怨SET区='。$区'。其中num = '$ ID'”

1

之前Where子句中添加一些空间,让您的查询像

UPDATE complain SET area = ".$area." WHERE num = ".$id." 
1

".$area."WHERE

结果之间缺失的空间,然后

UPDATE complain SET area = 2WHERE num = 0815 
0

以下查询应该工作:

$sql = "UPDATE complain"."SET area = $area". 
     "WHERE num = $id"; 

希望它能帮助!