0

几天前我发布了,我无法在我设置的 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);
?>

数据库的名称是imaging。这些列设置为: id(这是主键字段) os MAC Model AntiVirus Browser Email Connectivity Sound Ports

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

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

<?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条现有记录,但我无法添加新记录,我想知道它是否与此有关。

感谢您的任何建议。我知道我的语法可能不是最好的,所以总是感谢这个网站的任何建议。

4

2 回答 2

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);
}

并且...正如每个人都提到的,对这些字符串进行编码 - 假设 SQL 正在实际执行,并且您“知道”它有效,那么其中一个值中的某些标点符号很可能会干扰 SQL,例如一个意外的逗号让 MySQL 感到困惑

于 2012-04-29T17:01:07.257 回答
0

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

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

于 2012-04-29T16:48:49.840 回答