我知道列npi存在,所以我不确定为什么我会收到此错误;我在这里读过其他一些帖子,但没有什么对我有用。在我的where子句中,我尝试了反引号和单引号,但没有用。任何帮助将不胜感激。谢谢。
<?php
include('config.php');
if (isset($_GET['insurance_id']) ) {
$insurance_id = (string) $_GET['insurance_id'];
if (isset($_POST['submitted'])) {
foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); }
$sql = ("UPDATE `doctor_data` SET `dr_first_name` = '{$_POST['dr_first_name']}', `dr_last_name` = '{$_POST['dr_last_name']}' where npi='$npi'");
mysql_query($sql) or die(mysql_error());
echo (mysql_affected_rows()) ? "Edited Record.<br />" : "Nothing changed. <br />";
echo "<a href='index.php?id=28&insurance_id=($REQUEST:insurance_id)'>Back To List</a>";
}
$row = mysql_fetch_array ( mysql_query("SELECT * from `doctor_data`"));
?>
<form action='' method='POST'>
<p><b>Doctor:</b><br /><input type='text' name='dr_first_name' value='<?= stripslashes($row['dr_first_name']) ?>' /> <input type='text' name='dr_last_name' value='<?= stripslashes($row['dr_last_name']) ?>' />
<p><input class="btn btn-success" type='submit' value='Update Record' /><input type='hidden' value='1' name='submitted' />
</form>
<? } ?>
此外,数据在发布后保存在表单上,但不会保存到数据库中,按下发布按钮后,我会收到标题中发布的错误消息。
-- phpMyAdmin SQL Dump
-- version 3.4.11.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Feb 15, 2013 at 05:50 PM
-- Server version: 5.5.23
-- PHP Version: 5.2.17
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `anag_demo`
--
-- --------------------------------------------------------
--
-- Table structure for table `doctor_data`
--
CREATE TABLE `doctor_data` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`npi` int(11) DEFAULT NULL,
`dr_first_name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
`dr_last_name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `npi` (`npi`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=17 ;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
答案 0 :(得分:1)
试试这个:
$nameFirst = $_POST['dr_first_name'];
$nameLast = $_POST['dr_last_name'];
$sql = "UPDATE doctor_data SET dr_first_name = '$nameFirst', dr_last_name = '$nameLast' where npi = '$npi'";
字符串格式不正确b / c您有一系列单引号,一些用于表示传递给mysql的字符串,另一些用于指示关联数组引用的键。如评论中所述,您应该查看PDO和bindValue。
- 更新 -
你有可能在姓氏中有一个撇号,导致破损。您应始终清理 vars传递给mysql,以确保恶意用户不会尝试执行恶意命令。你使用弃用的mysql api,你应该至少转移到mysqli或者更好的pdo,如上所述。无论如何,试试这个:
$nameFirst = mysql_real_escape_string($_POST['dr_first_name']);
$nameLast = mysql_real_escape_string($_POST['dr_last_name']);