我几天前发布了,我无法在我设置的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条现有记录,但我无法添加新记录,我想知道它是否与此有关。
感谢您的任何建议。我知道我的语法可能不是最好的,因此本网站的任何建议都会受到赞赏。
答案 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混淆的意外逗号