PHP / MySQL - 无法插入数据库

时间:2012-04-29 16:44:13

标签: php mysql syntax

我几天前发布了,我无法在我设置的MySQL数据库中插入其他记录。我更正了语法,但数据库不会再次更新。基本上,我在HTML中有几个表单,它们将会话传递到下一页,直到PHP在最后一页上的进程插入到数据库中。它工作了两次(我现在在数据库中有2条记录),但它不会插入任何其他记录。几天前它运作良好。我对任何事情做的唯一更改是我添加了一个搜索功能,该功能使用同一个用户访问同一个数据库,但该连接也在该脚本的末尾关闭。这是我用来插入数据库的代码(我知道它不是最好的编码工作,我还在学习)。

<?php

$con = mysql_connect("localhost","my_username","mypassword");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("dgibbo1_imaging", $con);

// Here too, please mysql_real_escape_string() all parameters 
mysql_query("INSERT INTO imaging (os,MAC,Model,AntiVirus,Browser,Email,Connectivity,Sound,Ports) VALUES ('".$_SESSION['imaging2']."','".$_SESSION['imaging3']."','".$_SESSION['imaging4']."','".$_SESSION['antivirus']."','".$_SESSION['browser']."','".$_SESSION['email']."','".$_SESSION['connectivity']."','".$_SESSION['sound']."','".$_SESSION['ports']."')");
    OR die("Could not update: ".mysql_error());



mysql_close($con);
?>

数据库的名称是成像。列设置为: id(这是主键字段) 口 苹果电脑 模型 防病毒软件 浏览器 电子邮件 连接 声音 端口

我发现奇怪的是它插入记录没有任何问题,直到我今天再次尝试。它是否可能与我的搜索代码有关?

搜索是另一个页面上的简单表单并处理此表单:

<?php

$con = mysql_connect("localhost","my_user","mypassword");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("dgibbo1_imaging", $con);

// Always escape parameters injected into SQL queries
$result = mysql_query( "SELECT * FROM imaging WHERE MAC LIKE '%" 
                     . mysql_real_escape_string ( $search, $con ) 
                     . "%'"
                     );

echo "<table border='1'>
<tr>
<th>MAC</th>
<th>Model</th>
<th>AntiVirus</th>
<th>Email</th>
<th>Browser</th>
<th>Connectivity</th>
<th>Sound</th>
<th>Ports</th>
</tr>";

while($row = mysql_fetch_array($result)) {

  echo "<tr>";
  echo "<td>" . $row['MAC'] . "</td>";
  echo "<td>" . $row['Model'] . "</td>";
  echo "<td>" . $row['AntiVirus'] . "</td>";
  echo "<td>" . $row['Email'] . "</td>";
  echo "<td>" . $row['Browser'] . "</td>";
  echo "<td>" . $row['Connectivity'] . "</td>";
  echo "<td>" . $row['Sound'] . "</td>";
  echo "<td>" . $row['Ports'] . "</td>";
  echo "</tr>";

  }

echo "</table>";

mysql_close($con);
?>

与此同时,搜索将每次成功提取2条现有记录,但我无法添加新记录,我想知道它是否与此有关。

感谢您的任何建议。我知道我的语法可能不是最好的,因此本网站的任何建议都会受到赞赏。

2 个答案:

答案 0 :(得分:0)

尝试创建一个单独的php文件并将值硬编码到其中。运行它,看看会发生什么。您的搜索表单不应干扰其他表单。

编辑使用表单时出现的任何错误?插入另一个表时有什么错误吗?

答案 1 :(得分:0)

我看到了你的帖子,这看起来都很“正确”。我建议添加一些日志而不是DIE,看看MySQL对这些插入语句的看法:

$sql = "INSERT INTO imaging ....";
mysql_query($sql);
if(mysql_errno()) {
    $message  = mysql_error() . "\n" . $sql . "\n";
    $fp = fopen('c:\mylogifle.txt', 'a');
    fwrite($fp, $message);
    fclose($fp);
}

AND ...正如大家所提到的,对这些字符串进行编码 - 假设SQL实际上正在执行,而你“知道”它的工作原理,其中一个值中的某些标点符号很可能会干扰SQL,就像一个让MySQL混淆的意外逗号