0

oidテーブルのフィールドからを検索する関数があります。ドキュメントによると、oidフィールドは自動的に作成され、自動的にインクリメントされます。いいね。

def teddy_bear_id_by_url(url)
  query = "select oid from teddy_bears where url = \"#{url}\""
  res = $db.execute(query)
  return res
end

残念ながら、このコードは[](空の配列)を返します。sqliteシェルでクエリを実行すると、「適切な」値が返されます(例4)。

def teddy_bear_id_by_url(url)
  return $db.execute("select oid from teddy_bears where url = '?'", url)
end

上記も機能しません。

私は確かにurlそれが私が思うことを含んでいることをチェックしました。

何が起こっているのでしょうか?

4

1 に答える 1

1

url文字列補間と組み合わせてSQLを台無しにしている、おそらく何か面白いことが起こっています。最善の策は、execute通話でプレースホルダーを使用することです。

$db.execute("select oid from teddy_bears where url = ?", url)
于 2012-07-16T07:16:14.787 に答える