PHP/MySQLの私は、このエラーになっておくキープ構文エラーを取得(PHP/MySQLの)
:「あなたはあなたのSQL構文でエラーが発生している。右の構文についてはMySQLサーバのバージョンに対応するマニュアルをチェックします1行目付近で '1'を使用する。
私はこのクエリを実現させるために努力しています。それは動作し、mysqlデータベースに挿入されますが、このエラーは毎回表示されます。私は同じ行のすべてを使い、二重引用符を一重引用符に変更し、samen行のすべてを挿入するすべての空白を削除し、変数({$ variable}を '$ variable'に渡す方法を変更しました)その他のすべて。私はこれに関連したいくつかのstackoverflowの質問を見ましたが、さまざまな解決策があります。 数値フィールドに ''を渡すことはできません。
私は今オプションがありません。助けが必要! このエラーはここ
がコードで示したが、データが正しく、私のテーブルに挿入されて保持します:
$user_id = get_current_user_id();
$prescription_name = $_POST['prescription_name'];
$date_created = date('Y-m-d');
$last_updated = date('Y-m-d');
$right_eye_sphere = $_POST['right_eye_sphere'];
$left_eye_sphere = $_POST['left_eye_sphere'];
$right_eye_cylinder = $_POST['right_eye_cylinder'];
$left_eye_cylinder = $_POST['left_eye_cylinder'];
$right_eye_axis = $_POST['right_eye_axis'];
$left_eye_axis = $_POST['left_eye_axis'];
$pd = $_POST['pd'];
$date_of_birth = $_POST['date_of_birth'];
$file_path = $_POST['file_path'];
$add_query = "INSERT INTO wew_prescription (
prescription_id,
user_id,
prescription_name,
date_created,
last_updated,
right_eye_sphere,
left_eye_sphere,
right_eye_cylinder,
left_eye_cylinder,
right_eye_axis,
left_eye_axis,
pd,
date_of_birth,
file_path
) Values (
NULL,
{$user_id},
'{$prescription_name}',
'{$date_created}',
'{$last_updated}',
'{$right_eye_sphere}',
'{$left_eye_sphere}',
'{$right_eye_cylinder}',
'{$left_eye_cylinder}',
'{$right_eye_axis}',
'{$left_eye_axis}',
'{$pd}',
'{$date_of_birth}',
'{$file_path}'
)";
$sql = $dbCon->query($add_query);
if (!mysqli_query($dbCon,$sql)){
die('Error: ' . mysqli_error($dbCon));
}else{
mysqli_query($dbCon,$sql);
echo "dados atualizados!";
}
あなたのスクリプトは[SQLインジェクション攻撃](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)の危険にさらされています。 [Little Bobby Tables](http://bobby-tables.com/)[入力を逃れている場合でも、安全ではありません!](http://stackoverflow.com/questions/5741187/sql-injection-that-gets -around-mysql-real-escape-string)[prepared parameterized statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)を使用してください。 –
オブジェクト指向スタイルの関数呼び出し '$ con-> query($ sql)'と手続き関数呼び出し 'mysqli_query($ con、$ sql)'を混在させることは珍しいことです。クエリの実行結果を '$ sql'という名前の変数に代入するのはちょっと奇妙です。それは単なる変数名です。何でもかまいません。しかし、 '$ sql'という名前の変数に何かを代入しようとすると、それはSQLテキストになります。文字列の値は' $ add_query'に代入されます。 Barmarが言うように、コードは文字列 '' 1 ''を実行しています。 – spencer7593
ありがとうございました!私は準備されたパラメータ化されたステートメントを調べます!私はMySQLを学ぶフロントエンドの開発者です –