Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP插入数据库时出错_Php_Mysql - Fatal编程技术网

PHP插入数据库时出错

PHP插入数据库时出错,php,mysql,Php,Mysql,所以,我试图调试我的一个程序,它是一个简单的PHP代码,用于插入数据库 每当我在浏览器中运行此操作时: http://localhost:3456/maps/savemdata.php?descr=Best&lat=-37.12345&lng=122.12345 它应该将值插入数据库,但我得到的是: 无效查询:SQL语法中有错误;检查手册 对应于MySQL服务器版本的正确语法 使用接近“desc、lat、lng值最佳”、“37.12345”、“122.12345” 在1号线 S

所以,我试图调试我的一个程序,它是一个简单的PHP代码,用于插入数据库

每当我在浏览器中运行此操作时:

http://localhost:3456/maps/savemdata.php?descr=Best&lat=-37.12345&lng=122.12345
它应该将值插入数据库,但我得到的是:

无效查询:SQL语法中有错误;检查手册 对应于MySQL服务器版本的正确语法 使用接近“desc、lat、lng值最佳”、“37.12345”、“122.12345” 在1号线

Savemdata.php


DESC是mysql中的一个关键字。你应该把它收起来

desc是一个保留关键字,恰好是列的名称。为了避免语法错误,您需要使用backtick来转义它。例如

$query = sprintf("INSERT INTO `markers` " .
     " (`desc`, `lat`, `lng` ) " .
     " VALUES ('%s', '%s', '%s' );",
     mysql_real_escape_string($desc),
     mysql_real_escape_string($lat),
     mysql_real_escape_string($lng));

如果您有权更改表,请更改不是保留关键字的列名,以避免问题再次发生。

Rahul,我建议您使用PDO。尝试用下面的方法更改代码

<?php
$hostname = '127.0.0.1:3306';        
$dbname   = 'login'; // Your database name.
$username = 'root';             // Your database username.
$password = ''; 

// database connection
$conn = new PDO("mysql:host=$hostname;dbname=$dbname",$username,$password);

// new data
$desc = $_GET['descr'];
$lat = $_GET['lat'];
$lng = $_GET['lng'];

// query
$sql = "INSERT INTO markers  (desc,lat,lng) VALUES (:desc,:lat,:lng)";
$q = $conn->prepare($sql);
$q->execute(array(':desc'=>$desc,
                  ':lat'=>$lat,
                  ':lng'=>$lng));


?>

实际上,它应该在backticks中。DESC是答案。=Dso这样做,问题的一部分就解决了。。!!现在我可以在db中输入长的lat,但它仍然无法输入我制作表单的主页上的描述,请您在@rahul888查看一下,很高兴为您提供帮助。我已经在那个里添加了答案,它可能会帮助你们。是的,或者他应该使用mysqli。这也会给出错误,因为desc不在backticks中。
<?php
$hostname = '127.0.0.1:3306';        
$dbname   = 'login'; // Your database name.
$username = 'root';             // Your database username.
$password = ''; 

// database connection
$conn = new PDO("mysql:host=$hostname;dbname=$dbname",$username,$password);

// new data
$desc = $_GET['descr'];
$lat = $_GET['lat'];
$lng = $_GET['lng'];

// query
$sql = "INSERT INTO markers  (desc,lat,lng) VALUES (:desc,:lat,:lng)";
$q = $conn->prepare($sql);
$q->execute(array(':desc'=>$desc,
                  ':lat'=>$lat,
                  ':lng'=>$lng));


?>