我在x10hosting.com上做一个测试项目,制作一个HTML表单,将文本框中的文本发送到内部数据库。我在连接x10host PHPMyAdmin和x10host代码时遇到问题。如果你能告诉我哪里出错了,我真的很感激。下面是我的代码。如果您有任何疑问,请告诉我。谢谢。
的index.php
<html>
<h2>Summary:</h2>
</p>
<form role="form" method="POST" action="process.php">
<label>Key Points</label>
<input type="text" id="keypoints" name="keypoints"/>
</br>
<input type="submit" id="submit" name="submit"/>
</form>
</html>
process.php
<?php
//Connecting to sql db.
$connect = mysqli_connect('localhost','infinote','','infinote_bank');
mysqli_select_db($connect,'infinote_bank');
//Sending form data to sql db.
if(isset($_REQUEST['submit'])) {
mysqli_query($connect, "INSERT INTO `cornell` (keypoints) VALUES ('$_POST['keypoints']')");
echo "success!";
}
?>
答案 0 :(得分:-1)
假设您的数据库配置正确,问题就在于您插入数据的方式:VALUES ('$_POST['keypoints']')
。
请注意,您在此处使用了四个单引号。 PHP认为字符串只要满足下一个引用即可结束,并且可能会感到困惑,认为您正在尝试插入'$_POST['
。然后它会遇到keypoints']')
语法错误。
幸运的是,$_POST['keypoints']
已经是string
,因此只需插入即可:
INSERT INTO `cornell` (keypoints) VALUES ($_POST['keypoints'])
请注意,这容易受到SQL Injection的攻击,为了避免这种情况,您应该使用参数化查询,同时验证您的用户是否未将任何恶意内容输入到表单中:
$stmt = $connect->prepare("INSERT INTO cornell (keypoints) VALUES (?))");
$stmt->bind_param("s", strip_tags(htmlspecialchars($_POST['keypoints'])));
$stmt->execute();
过滤可能比这更极端,但这应该给你一个合理的基线。
希望这有帮助! :)