在可能的Addvalue.php文件中,3个字段的id,name,color ...在id中只有数字允许,在名称和颜色上只允许使用字母。值已成功插入到我的数据库中,但问题是当用户在HTML FORM字段中写入NAME和COLOR时,只有LETTERS允许写入,如果写入任何NUMBER消息,则显示“仅允许字母”....但它需要数字和字母。这是我的两个文件代码:
Addvalue.php代码:
<form method="post" action="addh.php">
<input type="number" name="id" id="id" required /> <span class="error">* </span>
<input type="text" name="name" id="name" required /> <span class="error">* </span>
<input type="text" name="color" id="color" />
<?php
include("config.php");
if (isset($_POST["submit"])) {
$id = $_POST["id"];
$name = $_POST["name"];
$color = $_POST["color"];
if (!preg_match("/^[a-zA-Z -]+$/",$name)) {
echo "Only letters allowed";
}
if(!preg_match("/^[a-zA-Z -]+$/",$color)) {
echo "Only letters allowed";
}
}
?>
addh.php代码:
<?php
include("config.php");
$sql="INSERT INTO honda (id, name, color)
VALUES ('$_POST[id]','$_POST[name]','$_POST[color]')";
$result = mysqli_query($link,$sql) or die(mysqli_error($link));
echo "Values Inserted";
?>
答案 0 :(得分:3)
而不是使用PHP,在输入中尝试HTML模式属性,如下所示:
<form action="">
Country code: <input type="text" name="country_code"
pattern="[A-Za-z]{3}" title="Three letter country code">
<input type="submit">
</form>
更多信息: W3School
答案 1 :(得分:0)
PHP在HTML之前加载,直到下次加载才可用。那么你的页面当前就是。
加载此内容:
<?php
include("config.php");
if (isset($_POST["submit"])) {
$id = $_POST["id"];
$name = $_POST["name"];
$color = $_POST["color"];
if (!preg_match("/^[a-zA-Z -]+$/",$name)) {
echo "Only letters allowed";
}
if(!preg_match("/^[a-zA-Z -]+$/",$color)) {
echo "Only letters allowed";
}
}
?>
然后这个
<form method="post" action="addh.php">
<input type="number" name="id" id="id" required /> <span class="error">* </span>
<input type="text" name="name" id="name" required /> <span class="error">* </span>
<input type="text" name="color" id="color" />
提交该表单后,它会直接转到此...
<?php
include("config.php");
$sql="INSERT INTO honda (id, name, color)
VALUES ('$_POST[id]','$_POST[name]','$_POST[color]')";
$result = mysqli_query($link,$sql) or die(mysqli_error($link));
echo "Values Inserted";
?>
盲目地插入数据,没有验证。我认为你想要的是......
Addvalue.php
<form method="post" action="addh.php">
<input type="number" name="id" id="id" required /> <span class="error">* </span>
<input type="text" name="name" id="name" required /> <span class="error">* </span>
<input type="text" name="color" id="color" />
<input type="submit" name="submit" value="Submit" />
</form>
然后addh.php成为:
if (isset($_POST["submit"])) {
$id = (int)$_POST["id"];
$name = mysqli_real_escape_string($link, $_POST["name"]);
$color = mysqli_real_escape_string($link, $_POST["color"]);
if (!preg_match("/^[a-zA-Z -]+$/",$name)) {
$error = 'Only letters allowed';
}
if(!preg_match("/^[a-zA-Z -]+$/", $color)) {
$error = 'Only letters allowed';
}
if(empty($error)) {
include("config.php");
$sql="INSERT INTO honda (id, name, color) VALUES ('$id','$name','$color')";
$result = mysqli_query($link,$sql) or die(mysqli_error($link));
echo "Values Inserted";
} else {
echo $error;
}
}
你应该查看准备好的陈述。 http://php.net/manual/en/mysqli.quickstart.prepared-statements.php
这是一个未经测试的起点。需要注意的其他事项id
应该是自动递增。