【问题标题】:Inserting data into MySQL将数据插入 MySQL
【发布时间】:2011-04-30 18:46:43
【问题描述】:

我知道这对你们大多数人来说可能非常容易,但我刚开始学习 PHP 和 MySQL,而且我没有编程背景,所以请耐心等待。我正在尝试将以下内容插入数据库。

错误信息:

解析错误:语法错误,意外 T_VARIABLE 在 C:\wamp\www\coninsert.php 第 17 行

PHP 代码:

<?php
$db = mysql_connect("localhost", "algo","*****");
if (!$db)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("reno",$db);

$name=$_POST['nom'];
$address=$_POST['adresse'];
$city=$_POST['ville'];
$zip=$_POST['codepostal'];
$phone=$_POST['numtel'];
$email=$_POST['email'];
$travaux=$_POST['travaux']

$sql = "INSERT INTO piste(name, address, ville, zip, phone, email, travaux) VALUES ("$name","$address","$city","$zip","$phone","$email","$travaux")";
mysql_query($sql)

mysql_close($db)
?>

谢谢!

【问题讨论】:

  • 示例代码易受SQL injection的攻击,这是一个非常严重的security risk。要修复这个漏洞,请从过时的 mysql 扩展切换到 PDO 并使用 prepared statements。如果您需要 PDO 教程,请尝试 "Writing MySQL Scripts with PHP and PDO"。您保存的网站可能只是您自己的。
  • 你应该学习一些PHP 101: PHP For the Absolute Beginner
  • 此外,数据库连接应该由一个脚本中定义的函数或类创建,该脚本在其他脚本中使用。这样,数据库凭证就不会随意分散,这使得保护它们更容易。它还使您的数据库连接代码不易受拼写错误的影响。有关此站点上的最新示例,请参阅 PHP, Variable Scope Question。但是,不要将自己限制在这一页上;在网上搜索更多信息。
  • 我尝试实现 scobal 的答案,错误更改为意外的 T_STRING。我不知道该怎么办:(

标签: php mysql


【解决方案1】:

行:

$travaux=$_POST['travaux']
mysql_query($sql)
mysql_close($db)

您缺少分号。


更新..啊是的,还有
$sql = "INSERT INTO piste(name, address, ville, zip, phone, email, travaux) 
        VALUES "$name","$address","$city","$zip","$phone","$email","$travaux")";

应该是:

$sql = "INSERT INTO piste(name, address, ville, zip, phone, email, travaux) 
        VALUES ('$name','$address','$city','$zip','$phone','$email','$travaux')";

请添加一些针对 SQL 注入的保护,因为并非没有。


更新2:

这样的行:$email=$_POST['email'];
应该看起来像:
$email= isset($_POST['email'])? mysql_real_escape_string($_POST['email']) : '';

【讨论】:

    【解决方案2】:

    您需要在文本值周围加上单引号: 值 ('".$name."', '".$address."', '".$city."', '".$zip."'....

    【讨论】:

      【解决方案3】:

      改变这一行:

      $sql = "INSERT INTO piste(name, address, ville, zip, phone, email, travaux) VALUES ("$name","$address","$city","$zip","$phone","$email","$travaux")";
      

      到:

      $sql = "INSERT INTO piste(name, address, ville, zip, phone, email, travaux) VALUES ('" . $name . "','" . $address . "','" . $city . "','" . $zip . "','" . $phone . "','" . $email . "','" . $travaux . "')";
      

      【讨论】:

        猜你喜欢
        • 2023-04-10
        • 2013-05-29
        • 1970-01-01
        • 1970-01-01
        • 2017-12-30
        • 2014-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多