0

列 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 */;
4

1 に答える 1

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'";

文字列の形式が正しくありません。一連の単一引用符があり、一部は mysql に渡された文字列を示し、その他は連想配列参照のキーを示しています。コメントで述べたように、PDObindValueを調べる必要があります。

--アップデート--

姓にアポストロフィが含まれている可能性があり、それが破損の原因となっています。悪意のあるユーザーが悪意のあるコマンドを実行しようとしないように、mysql に渡される変数を常にサニタイズする必要があります。非推奨の mysql api を使用している場合は、少なくともmysqliに移行するか、上記のように pdo に移行する必要があります。いずれにせよ、これを試してください:

$nameFirst = mysql_real_escape_string($_POST['dr_first_name']);
$nameLast = mysql_real_escape_string($_POST['dr_last_name']);
于 2013-02-15T23:40:23.050 に答える