-1

insert.php後ろですhtaccess/passwd

外部ソースからデータを取得し、これを変数に変換してデータベースに挿入します。

外部ソースに左右の括弧 (ここにテキスト) が存在することが原因であると思われる mysql エラーが発生しました。

使用しましmysql_real_escape_stringたが、この場合は機能していないようです。

$con = mysql_connect("localhost","user_name","password");
if (!$con)
{
    die('Could not connect: ' . mysql_error());
}

mysql_select_db("user_dbname", $con);

// escape characters
$escaped_value = mysql_real_escape_string($var);

$sql = "INSERT INTO data (field1, field2, field3, field4, field5, field6)
        VALUES ('$_POST[field1]','$_POST[field2]','$_POST[field3]','$_POST[field4]',
                '$field5','$escaped_value', )";
;
4

3 に答える 3

0

最後のデータフィールドの後にコンマがあり、クエリが失敗します。また、$_POST配列変数を参照する必要があります$_POST['field1']$_POST[field1]

試す

$sql = "INSERT INTO data (field1, field2, field3, field4, field5, field6)
    VALUES ('".$_POST['field1']."','".$_POST['field2']."','".$_POST['field3']."','".$_POST['field4']."',
            '$field5','$escaped_value')";

事実上、mysql_real_escape_stringあなたの問題の最小です。:)

于 2012-11-06T13:20:43.417 に答える
0

最良のアプローチは、準備されたステートメントを使用することです。いずれにせよ、最終的にはそうする必要があります。赤いボックスを参照してください。拡張機能はmysql_*非推奨です。代替手段を使用します:PDOまたはmysqli_*

try
{
    $db = new PDO();//connect, pass correct data here
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//cause PDO to throw PDOExceptions on error
    $stmt = $db->prepare('INSERT INTO data (field1, field2, field3, field4, field5, field6)
            VALUES (:field1, :field2,:field3,:field4, :field5,:field6)');
    //make array with values, no need to use escape-functions on $var:
    $bind = array(':field1' => $_POST['field1'],':field2' => $_POST['field2'],
                  ':field3' => $_POST['field3'],':field4' => $_POST['field4'],
                  ':field5' => $field5,':field6' => $var);
    if ($stmt->execute($bind))//pass array here
    {
        return true;//data inserted
    }
}
catch(PDOException $e)
{
    echo $e->getMessage();
    $db = null;
    return false;
}
于 2012-11-06T13:25:41.993 に答える
0

mysql_real_escape_string メソッドを使用すると、変数を {} 文字の間に入れることができます

于 2012-11-06T13:17:12.913 に答える