0

そのため、テキストとIDをテーブルに挿入するコードに取り組んでいます。コードにテキストとユーザー名を送信します。ユーザー名を取得し、usersテーブルからそれに対応するIDを選択します。次に、それをテキストテーブルに挿入します。

私はこれを試しました:

$id = mysql_query("SELECT users.id FROM users WHERE name='$username'");

mysql_query("INSERT INTO `shouts` (`id`, `user`, `text`, `datetime`) VALUES (NULL, '$id', '$text', '$datetime');");

$idただし、変数がSQLデータを保持しているため、機能しません。そのデータを整数に変換するにはどうすればよいですか?

4

5 に答える 5

3

マニュアルから:

返された結果リソースは、返されたデータにアクセスするために、mysql_fetch_array() および結果テーブルを処理するその他の関数に渡される必要があります。

また、マニュアルから:

この拡張機能の使用はお勧めできません。代わりに、MySQLi または PDO_MySQL 拡張機能を使用する必要があります。

あなたの質問に答えるには、これを試してください:

$id = mysql_query("SELECT users.id FROM users WHERE name='$username'");
$id = mysql_fetch_assoc($id);
mysql_query("INSERT INTO `shouts` (`id`, `user`, `text`, `datetime`) VALUES (NULL, '". $id['id']."', '$text', '$datetime');");

これは悪い考えですが、 PDOの使用を検討する必要があります。それは本当に難しいことではありません。SQL ステートメントを準備する機能を提供し、SQL インジェクションの被害者にならないことを知っているので、夜はぐっすり眠ることができます。あなたがすでに被害者であるかどうかにかかわらず、あなたが持っているコードはせいぜいあいまいです。

于 2012-07-24T19:30:00.107 に答える
0

試してみる$id = addslashes($id);か、SQL文字列をエンコードする他の方法

于 2012-07-24T19:27:09.857 に答える
0

$id

IDを取得して変数に入れる必要がある結果が含まれます。mysql_fetch_row 関数を確認してください。これで、必要なものが得られると思います。mysql_fetch_row 構文

于 2012-07-24T19:27:59.840 に答える
0

mysql_query は通常の変数を返すことはなく、結果リソースのみを返します。mysql_fetch_assoc を試して、select クエリからデータを取得してください。また、MySQL の php 拡張機能は非推奨であり、MySQLi または PDO に移行することをお勧めします。

于 2012-07-24T19:28:36.253 に答える
0

これはうまくいくはずです

   $sql = mysql_query("SELECT users.id FROM users WHERE name='$username'");
    $id = mysql_fetch_array($sql)['id'];
于 2012-07-24T19:30:35.660 に答える