2012-03-15 17 views
0

私はMySQLデータベースをセットアップしており、各行に対して28個の値(アルファベット、文字列サイズ、および文字列自体)を持っています。文字列自体を除く各値は整数で、正常に動作します。しかし、文字列をテーブルに挿入しようとすると、1000の代わりにテーブルに5行しか得られなくなります。そして、それらの5つのテーブルを見ても、 "重要な"列の代わりに文字列!文字列をデータベースに入れるときに何か不足していますか?PHPを使用してMySQLデータベースに文字列を入力

mysql_query("CREATE TABLE allwords 
(
valued varchar(20), 
length int, 
a int, 
b int, 
c int, 
d int, 
e int, 
f int, 
g int, 
h int, 
i int, 
j int, 
k int, 
l int, 
m int, 
n int, 
o int, 
p int, 
q int, 
r int, 
s int, 
t int, 
u int, 
v int, 
w int, 
x int, 
y int, 
z int 
)"); 
mysql_query("INSERT INTO allwords (valued, length, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z) 
VALUES ($letter, $countnow, $a, $b, $c, $d, $e, $f, $g, $h, $i, $j, $k, $l, $m, $n, $o, $p, $q, $r, $s, $t, $u, $v, $w, $x, $y, $z)"); 
+0

1000ではなく5行を意味しますか?投稿できるコードはありますか?あなたのvarcharは20文字に設定されています、あなたは1000文字の単語を追加しようとしていますか? –

+0

エラーチェックはどこですか?何かが間違っていて、あなたが気づいていない便利な情報のエラーメッセージがあなたに与えることができない...。 – hakre

+0

非常に珍しいデータベース設定です。あなただけの文字列自体はあなたに合いませんか? –

答えて

2

任意の文字列値については、変数を一重引用符で囲み、エスケープする必要があります。

いっそ
VALUES ('$letter', $countnow, $a, $b ...) 

は、mysqlはタイプだけでなく、提供インジェクション攻撃に対する保護の対策を知っていることを保証するために、パラメータ化クエリを使用します。これを行う1つの方法はPDOを使用することです。

なぜ、予想より少ない行が得られるのかについては、クエリ実行ステートメントの最後にor die(mysql_error())を追加してみてください。発生しているエラーは検出されずに逃げ出します。

+0

@あなたの常識:あなたの編集が私の編集を上書きしたと思いますので、最後の段落は失われました。ロールバックしてエスケープ編集を追加しました。 – JYelton

関連する問題