mysqlクエリを実行する必要がありますが、その方法がわかりません。
$x
(分割した後)2つのテーブルフィールドを足し合わせて、phpの値よりも大きい行を選択したいと思います。
擬似コード:
SELECT * FROM table WHERE (field_a/50 + field_b/20) > $x
これ$x
はphp値であり、必要な合計です。
誰かヒントがありますか?
これは、ほとんどあなたが書いた擬似コードです。
$x = 100; // example
$x = mysql_real_escape_string($x); // "securing" the value.
$sql = "SELECT * FROM table WHERE (field_a/50 + field_b/20) > '$x'";
$result = mysql_query($sql);
パラメータの使用はより洗練されていますが、あなたはその考えを理解しました。$x
このようにして、空の場合や予期しない値がある場合にSQLクエリを混乱させることができます。mysql_real_escape_string
クエリで使用する前に、を使用して値をエスケープするこの問題を処理しました。
編集
MySQLiを使用した同じ例:
$stmt = $mysqli->prepare("SELECT * FROM table WHERE (field_a/50 + field_b/20) > ?");
// "i' is a format string, each "i" means integer
$stmt->bind_param("i", $x); // use "d" instead of "i" for double
$stmt->execute();
$stmt->bind_result($col1, $col2);
それはあなたがそれについて行く方法とほとんど同じです。クエリ文字列を作成する前に$xが適切に数値であることを確認する以外に、それがあります。
1つの小さな提案-この種のクエリを頻繁に行う場合はfield_a/field_b
、別のフィールドにデータの値をキャッシュすることを検討することをお勧めします。これはわずかな非正規化ですが、このフィールドにインデックスを付けることができ、おそらくパフォーマンスが向上します。現在、派生/計算された値でwhereを実行しているため、インデックスを使用できません。