2016-03-30 6 views
0

これはおそらく初心者のエラーですが、残念ながら私はそれを理解することができませんでした。where句を追加するときのエラー

私は、コードを実行すると、私はエラー 'エラー番号' => int型1064 'SQLSTATE' =>文字列 '42000'(長さ= 5) 'エラー' => string「を得るの下にあなたが中にエラーが発生していますあなたのSQL構文。 「\ 'Caribbean \」at line 1(length = 159)の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

"select * from Country"を使用するとクエリは機能しますが私が「どこの地域= 'カリブ海'」を追加しても、それはそうではありません。

$sql = "select * from Country where Region = 'Caribbean'"; 
$db = mysqli_init(); 
$db->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1); 
@ $db->real_connect('localhost', 'user', 'passwd', 'world'); 
if ($db->connect_errno) { 
    echo "Failed to connect to MySQL: (". $db->connection_errno . ")". 
     $mysqli->connect_error; 
    exit; 
} 
$sql = $db->real_escape_string($sql); 
$result = $db->query($sql); 
var_dump($db->error_list); 
var_dump($result->fetch_all()); 
+1

(あなたのケースでは - >カリブ)、全体ではなく、クエリ – bksi

+0

@bksi - 働いていました。私はカリブを変数に入れて、それをSQLに連結し、それがうまくいった。 (回答としてコメントする方法はありません:() – klequis

+0

私はそれを答えに入れました;)。喜んで助ける – bksi

答えて

0

クエリ全体ではなく、パラメータのみをエスケープする必要があります。以下のよう

何か:あなたが唯一のparamsをエスケープする必要があり

$region = 'Caribbean'; 
$paramRegion = $db->real_escape_string($region); 
$sql = "select * from Country where Region = '".$paramRegion."'"; 
$db = mysqli_init(); 
$db->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1); 
@ $db->real_connect('localhost', 'user', 'passwd', 'world'); 
if ($db->connect_errno) { 
    echo "Failed to connect to MySQL: (". $db->connection_errno . ")". 
     $mysqli->connect_error; 
    exit; 
} 
$result = $db->query($sql); 
var_dump($db->error_list); 
var_dump($result->fetch_all()); 
0

スクリプト内のシンボルと異なる場合があるテキストファイルからコピーすると、引用符を確認できます。 キーボードから記号を入力した後でも、国名を変数に入れて、まだエラーが発生していれば参照で呼び出すようにしてください。

関連する問題