好的,所以我已经尝试了好几天了,而且我一直在阅读各种各样的教程,但我似乎错过了一些东西,因为我仍然无法得到它。我正在研究Web表单并将表单输入插入到相应的数据库中。我能够从表单中获取信息并在结果页面上回显它,所以我知道一切正常。但我似乎无法将表单输入进入我的数据库。我知道连接有效,所以我的语法肯定有问题。
PHP
//DB Configs
$username = null;
$password = null;
try {
$db = new PDO("mysql:host=localhost;dbname=Testing3", $username, $password);
//Set the PDO error mode to exception (what does this mean?)
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//Prepare SQL and bind parameters
$sql = $db->prepare("INSERT INTO `NFK_SPECIES` (`Name`)
VALUES (:name)");
//Insert a Row
$species = $_POST['Species'];
$sql->execute(array(':name'=>$species));
}
catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}
$result = $db->query('SELECT * from `NFK_Species` ORDER BY `Id` DESC');
//Query
/*
$input = $db->query("INSERT INTO `NFK_Species` (`Id`, `Name`) VALUES (Null, `$species`)");
$result = $db->query('SELECT * from `NFK_Species` ORDER BY `Id` DESC');*/
//Kill Connection
$db = Null;
}
HTML / PHP(网页)
<h1>Inserting a New Species into Database:</h1>
<h3>Results</h3>
<?php
if ($sql->execute()){
echo "Data input was successful";
while ($rows = $result->fetch()){
echo $rows['Name']; echo ", ";
}
} else {
echo "Data input failed."; echo mysql_error();
}
?>
这只是我目前的尝试。我更喜欢我之前使用bindParam
和简单execute()
的尝试,所以如果我可以让它工作,我会很感激。以下示例还包含此表的Id
列。这是一个自动增量列,我读过它并不需要包括在内,因此我将其排除在最近的尝试之外。这是对的吗?
过去的PHP
//Prepare SQL and bind parameters
$sql = $db->prepare("INSERT INTO `NFK_SPECIES` (`Id`, `Name`)
VALUES (Null, :name)");
$sql->bindParam(':name', $species);
//Insert a Row
$species = $_POST['Species'];
$sql->execute();
我一直在阅读一些教程(或试图),包括尝试破解php.net教程,但它们似乎都是为那些已经掌握了这个并且经验丰富的人编写的。发生了什么,我对这一切都很陌生。
答案 0 :(得分:0)
好吧,我能够弄清楚我的问题,然后使用我的代码成功插入一行。
<强>调试:强>
因此上面发布的代码破坏了我的代码,这意味着我的页面无法加载。我认为这意味着某处存在语法错误,但我找不到它,也没有人找到它。此外,这意味着我的Socket socket = new Socket(somehost, someport);
InputStream inStream = socket.getInputStream();
OutputStream outStream = socket.getOutputStream();
...
...
byte requestID = 1;
byte sourceID = 2;
byte data[] = ....
Packet packet = new Packet(requestID,sourceID,data);
outStream.write(packet.getData());
outStream.flush();
...
...
无法让我知道问题是什么。如果你看看我原来的PHP示例,你会在最底层看到有一个Error Alerts
只是挂出来并没有任何目的,但更重要的是,它打破了代码(愚蠢,超敏感的php码)。所以我摆脱了,然后我的错误消息开始工作。它说我无法连接到我的数据库。所以我查看了我的数据库登录语法,看起来很好,然后你会在我的第一个php示例中注意到,我设法将"}"
和$username
设置为$password
。显然这是不正确的。所以我解决了这个问题,下次刷新页面时,我在数据库中成功输入了一行! (耶)
注意:强>
在我原来的php示例中,我为行插入添加了NULL
列,它是自动递增的,值为Id
。这工作,并插入行。然后我尝试完全抛弃它,它仍然有效。因此,下面更新的工作代码不包括物种ID。
工作代码:
NULL