php表单插入到mysql
我的php代码似乎不起作用。我昨天就开始工作了,但我一定是改变了什么,现在不是了。据我所知,是if($word)引起了问题。else部分起作用,它与mysql数据库连接,但if语句不起作用 以下是php:php表单插入到mysql,php,html,mysql,Php,Html,Mysql,我的php代码似乎不起作用。我昨天就开始工作了,但我一定是改变了什么,现在不是了。据我所知,是if($word)引起了问题。else部分起作用,它与mysql数据库连接,但if语句不起作用 以下是php: <?php require('connect.php'); $word=$_POST['word']; $submit=$_POST['submit']; if($submit){ if($word){ mysql_query("INSER
<?php
require('connect.php');
$word=$_POST['word'];
$submit=$_POST['submit'];
if($submit){
if($word){
mysql_query("INSERT INTO words (word) VALUES ($word)");
}
else{
echo "Enter a word.";
}
}
?>
这是html表单:
<form name="form" id="form" method="post" action="index.php">
<p><label>Label</label></p>
<p><input type="text" name="word" id="word" maxlength="16"/></p>
<p><input type="submit" name="submit" id="submit" value="Save"/></p>
</form>
标签
您应该立即停止使用此代码。它容易受到SQL注入的攻击。您需要学习如何绑定参数以防止出现这种情况,以及如何使用未弃用的API。我还建议您检查REQUEST\u METHOD
,而不是将$\u POST['word']
设置为空
由于您没有任何类型的错误捕获函数,因此很难判断问题出在哪里。如果非要我猜的话,可能是因为您在发布的变量周围缺少了单引号:
...INSERT INTO words (word) VALUES ('$word')...
使用参数:
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['submit']) ) {
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'world');
/* check connection */
if (!$link) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$stmt = mysqli_prepare($link, "INSERT INTO words (word) VALUES (?)");
mysqli_stmt_bind_param($stmt, 's', $_POST['word']);
/* execute prepared statement */
mysqli_stmt_execute($stmt);
printf("%d Row inserted.\n", mysqli_stmt_affected_rows($stmt));
/* close statement and connection */
mysqli_stmt_close($stmt);
/* close connection */
mysqli_close($link);
}
?>
这是一个很好的起点。您应该立即停止使用此代码。它容易受到SQL注入的攻击。您需要学习如何绑定参数以防止出现这种情况,以及如何使用未弃用的API。我还建议您检查
REQUEST\u METHOD
,而不是将$\u POST['word']
设置为空
由于您没有任何类型的错误捕获函数,因此很难判断问题出在哪里。如果非要我猜的话,可能是因为您在发布的变量周围缺少了单引号:
...INSERT INTO words (word) VALUES ('$word')...
使用参数:
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['submit']) ) {
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'world');
/* check connection */
if (!$link) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$stmt = mysqli_prepare($link, "INSERT INTO words (word) VALUES (?)");
mysqli_stmt_bind_param($stmt, 's', $_POST['word']);
/* execute prepared statement */
mysqli_stmt_execute($stmt);
printf("%d Row inserted.\n", mysqli_stmt_affected_rows($stmt));
/* close statement and connection */
mysqli_stmt_close($stmt);
/* close connection */
mysqli_close($link);
}
?>
这是一个很好的起点。您很可能需要引用您的
$word
值
INSERT INTO words (word) VALUES ('$word')
正如评论中提到的
别忘了输入净化
您很可能需要引用您的
$word
值
INSERT INTO words (word) VALUES ('$word')
正如评论中提到的
别忘了输入净化
。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助你决定哪一个。“据我所知,是if($word)导致了问题”-你能提供一些你认为导致问题的原因吗?它导致了什么问题?您的查询有sql注入,请参见此处如何处理输入如果我将mysql\u查询更改为简单的回显,它仍然无法工作。但是,如果字段id留空,“输入一个单词”回显不起作用。。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助你决定哪一个。“据我所知,是if($word)导致了问题”-你能提供一些你认为导致问题的原因吗?它导致了什么问题?您的查询有sql注入,请参见此处如何处理输入如果我将mysql\u查询更改为简单的回显,它仍然无法工作。但是,如果字段id为空,则“输入单词”回显会起作用。
插入单词集(单词)值($word)
不是有效的MySQL语法。@AarolamaBluenk由于$word周围没有任何引号,所以它会断开,但仅仅添加引号并不能解决真正的问题。插入单词集(单词)值($word)
不是有效的MySQL语法。@AarolamaBluenk由于$word没有任何引号,所以它会中断,但仅仅添加引号并不能解决真正的问题。虽然这可能是OP的最佳答案,但您可能应该让他使用OOP PHP,因为他似乎对此非常陌生。最好从OOP开始学习,而不是只是在以后从头开始学习。@Hiroto我不明白为什么我应该让他使用OOP,也不明白为什么这样更好。编程风格由OP决定。我在答案下面的评论应该足够了。虽然这可能是OP的最佳答案,但您可能应该让他指向OOP PHP,因为他似乎对此非常陌生。最好从OOP开始学习,而不是只是在以后从头开始学习。@Hiroto我不明白为什么我应该让他使用OOP,也不明白为什么这样更好。编程风格由OP决定。我在答案下的评论应该足够了。