也许我犯了一些明显的初学者错误,但我似乎无法弄清楚为什么会这样。
奇怪的是,如果我在“输入框”中输入一个数字,代码似乎只能正常工作。我在myphpadmin面板中检查了这一点,它显示已创建新记录。但是,如果我尝试按照预期输入字符串(例如:“hello”),数据库中不会出现新记录......
简而言之,只有在我输入数字时才会更新数据库,但输入字符串时不会更新。
为什么会发生这种情况的任何想法?这让我疯狂。如果有帮助,“公司”字段的数据类型为VARCHAR,排序规则设置为latin1_swedish_ci
PHP代码如下:
<?php
//Retrieve data from 'inputbox' textbox
if (isset($_POST['submitbutton']))
{
$comprating = $_POST['inputbox'];
//Create connection
$con = mysqli_connect("localhost","root","","test_db");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
//Insert data into 'Ratings' table
mysqli_query($con,"INSERT INTO Ratings (Company,Score)
VALUES ($comprating,1)");
mysqli_close($con);
}
?>
HTML代码为:
<form method="post">
<input type="text" name="inputbox">
<input type="submit" name="submitbutton">
</form>
干杯
答案 0 :(得分:1)
尝试此查询,
mysqli_query($con,"INSERT INTO Ratings (Company,Score)
VALUES ('$comprating',1)");`
^ ^
请注意保留字符串值的单引号,并且在将输入插入数据库之前不要忘记清理输入。
示例标准转义:
在执行使用$comprating = mysqli_real_escape_string($comprating)
的查询之前 $comprating
答案 1 :(得分:0)
这里是面向对象的方法,也是安全的,因为mysqli中使用了数据绑定。我建议使用它。
if (isset($_POST['submitbutton'])) {
$comprating = $_POST['inputbox'];
$mysqli = new mysqli("localhost", "root", "", "test_db");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$stmt = $mysqli->prepare("INSERT INTO Ratings (Company,Score) VALUES (?, ?)");
$stmt->bind_param($comprating, 1);
/* execute prepared statement */
$stmt->execute();
printf("%d Row inserted.\n", $stmt->affected_rows);
/* close statement and connection */
$mysqli->close();
}
如果你有任何问题,请随时提出任何问题。