无法使用php将数据插入mysql数据库中的现有表
我收到一条消息,新记录已创建,但当我重新加载phpmyadmin时,表是相同的。我还从同一数据库中检索了信息, 从同一个表中,使用SELECT命令,因此连接工作..(简单地说)。我不知道为什么没有更新。请帮忙。先谢谢你无法使用php将数据插入mysql数据库中的现有表,php,html,mysql,sql-insert,Php,Html,Mysql,Sql Insert,我收到一条消息,新记录已创建,但当我重新加载phpmyadmin时,表是相同的。我还从同一数据库中检索了信息, 从同一个表中,使用SELECT命令,因此连接工作..(简单地说)。我不知道为什么没有更新。请帮忙。先谢谢你 <html> <head> </head> <body> <?php define('DB_NAME', 'appointments'); define('DB_USER', 'root'); define('DB_PASS
<html>
<head>
</head>
<body>
<?php
define('DB_NAME', 'appointments');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$hos=$_POST['hos'];
echo $hos;
echo "<br/>";
$doc=$_POST['doc'];
echo $doc;
$date=$_POST['fdate'];
echo $date;
$time=$_POST['time'];
echo $time;
$pat=5;
echo $pat;
$sql = "INSERT INTO rantevou ('app_id','patient_id','date','time','hos','doc') VALUES ('4','$pat','$date','$time','$hos','$doc');";
if ($sql) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
mysqli_close($link);
?>
</body>
</html>
而不是
"INSERT INTO rantevou ('app_id','patient_id','date','time','hos','doc') VALUES ('4','$pat','$date','$time','$hos','$doc');"
取消列的引号
"INSERT INTO rantevou (app_id, patient_id, date, time, hos, doc) VALUES ('4','$pat','$date','$time','$hos','$doc');"
或者使用反勾号
"INSERT INTO rantevou (`app_id`, `patient_id`, `date`, `time`, `hos`, `doc`) VALUES ('4','$pat','$date','$time','$hos','$doc');"
您忘记执行查询了
mysqli_execute($con, "INSERT INTO rantevou (`app_id`, `patient_id`, `date`, `time`, `hos`, `doc`) VALUES ('4','$pat','$date','$time','$hos','$doc')");
您忘记执行查询,if($sql){
只计算变量
if (mysqli_query($link, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
首先,列名不要使用单引号,要么不使用任何内容,要么使用反勾号。
其次,您忘记执行查询。
另外,使用OOP更好
请尝试:
$mysqli = new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
及
编辑:鲁伟奇说的:声明尚未执行
看起来你知道你在做什么。你确定这里的参数:
$sql = "INSERT INTO rantevou (**'app_id','patient_id','date','time','hos','doc'**) VALUES ('4','$pat','$date','$time','$hos','$doc');";
if ($sql) {
是否与数据库中的列标题完全匹配
检查语句的另一个好方法是转到phpmyadmin,转到SQL记事本,输入具有相同结构的查询,然后查看返回的内容
您的查询可能会返回一条消息,但有一条消息说它失败了……这仍然会触发您的回显“新记录创建成功”;
以下是我最近插入DB的结构:
<?php
// to get data from android app
$gardenID=$_POST["gardenID"];
$vID=$_POST["vID"];
$quantity = $_POST["quantity"];
$timePlanted = date("Y/m/d");
// establishes connection to database
require "init.php";
echo "here";
echo $timePlanted;
echo $quantity;
$query = "insert into garden_veg (gardenID, vID, quantity, timePlanted) values ('".$gardenID."','".$vID."',
'".$quantity."', '".$timePlanted."' );";
$result = mysqli_query($con,$query);
$response = array();
$code = "addItem_success"; //changed code
$message = "Item(s) added!";
array_push($response,array("code" => $code, "message"=>$message));
echo json_encode(array("server_response"=>$response));
mysqli_close($con);
?>
您没有实际执行查询。如果在声明$sql
后添加行$result=mysqli\u query($link,$sql);
,您将执行查询
然后,您可以使用相同的if
评估它是否有效,但将该行更改为
if ($result) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($link);
}
if($result){
echo“新记录创建成功”;
}否则{
echo“Error:”.$sql.
“.mysqli_Error($link);
}
在上面的示例中,我还更改了您的错误报告,因为它引用了$conn,这是一个您以前没有声明过的变量。它现在使用与代码其余部分相同的$link
变量
此外,我强烈建议您转义数据,因为您正在插入发布数据的内容。转义数据将有助于防止受到攻击。这不是完全安全的,但这是一个良好的开端
要添加转义,请将每个$var=$\u POST['var']
行更改为$var=mysqli\u real\u escape\u字符串($link,$\u POST['var']);
例如,$hos=$\u POST['hos'];
变成$hos=mysqli\u real\u escape\u字符串($link,$\u POST['hos']);
这有助于防止像XKCD的精彩示例这样的时刻1)将单引号从列名中删除为反勾号(`)
2)执行您的查询。您没有执行
3)如果app\u id
列是自动递增的
和主键
。则无需传递值。保留为空
<?php
$sql = "INSERT INTO rantevou (`app_id`,`patient_id`,`date`,`time`,`hos`,`doc`) VALUES ('','$pat','$date','$time','$hos','$doc');";
$query = mysqli_query($link,$sql) ;
if ($query) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
您的代码中有许多错误
1.使用mysql\u error()
您不能使用mysql\u error
,因为您使用mysqli
进行数据库连接。第二件事mysql
不再受支持
解决方案使用mysqli\u错误($link);
2.使用$conn->error
您不能告诉我们$conn->error
,因为您使用的是mysqli
过程方式,不像面向对象的方式,而且您也没有定义$conn
,而是使用了$link
解决方案使用mysqli\u错误($link);
正确的代码
if(!mysqli_query($link, $sql)){
printf("Errormessage: %s\n", mysqli_error($link));
die;
}else{
echo "New record created successfully";
}
为什么不插入数据
因为您声明了变量$sql
,但没有执行它
新记录已创建
由于if条件检查变量是否有值(而不是0)以及yes$sql
是否有值,所以您总是会收到此消息
1.如果在insert语句sql注入中不需要任何sql注入,则必须使用prepare语句
2.“如果您的app_id
是int
请不要使用(“”或“”)引号而不是将“4”转换为int,则“单引号”或“仅应用于不在id上的字符串”
3.处理错误日志
4.请明确数据库扩展的使用概念
您不执行查询。您只设置了一个变量wrap offquotes form table and column
name,而使用了backtick
。并且忘记了执行insertquery@ask2now这些答案中有任何一个能解决您的问题吗?单击向上投票/向下投票按钮下方的勾号,可能会接受最佳答案,谢谢:)
<?php
$sql = "INSERT INTO rantevou (`app_id`,`patient_id`,`date`,`time`,`hos`,`doc`) VALUES ('','$pat','$date','$time','$hos','$doc');";
$query = mysqli_query($link,$sql) ;
if ($query) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
if(!mysqli_query($link, $sql)){
printf("Errormessage: %s\n", mysqli_error($link));
die;
}else{
echo "New record created successfully";
}