1

PHPファイルからinsertステートメントを実行してから、いくつかのコードを実行して、挿入が機能したかどうかを確認します。PHPは私に「成功」​​を教えてくれます。しかし、データベースをチェックしてレコードが存在するかどうかを確認すると、存在しません。さらに、MySQL管理者でSQLステートメントを直接実行すると、正常に機能します。間違ったデータベースやテーブルに挿入していないことは間違いありません。コードのクリーンアップされたバージョンは次のとおりです。

  $sql = "INSERT INTO companies (name, source_id, source_site, seeking_cf, currency, i_target, equity_offered, money_raised, num_investors, raised_pct, descr, city, state, country, categories_id, logo) VALUES (\"XYZ Widgets\", \"31\", 22, 1, \"£\", 250000, 0, 0, 0, 0, \"(Business Plan\", \"London\", \"\", \"UK\", 0, \"http://www.website.com/xyz.jpg\")";
  $rs = mysql_query($sql, $conn);  
  if(mysql_affected_rows($conn) == 0) { 
    $utoh = "fail"; 
  } else { 
    $utoh = "success";      
  }
  echo $utoh;

したがって、結果には「成功」と表示されますが、レコードはデータベースにありません。PHPはバージョン5.3です。MySQLは5.5です。

4

4 に答える 4

2

を使用することを容認するのは嫌いですが、ステートメントmysql_のエラーチェックを行う必要があります...mysql_query

<?php

$sql = "INSERT INTO companies (name, source_id, source_site, seeking_cf, currency, i_target, equity_offered, money_raised, num_investors, raised_pct, descr, city, state, country, categories_id, logo) VALUES (\"XYZ Widgets\", \"31\", 22, 1, \"£\", 250000, 0, 0, 0, 0, \"(Business Plan\", \"London\", \"\", \"UK\", 0, \"http://www.website.com/xyz.jpg\")";
$rs = mysql_query($sql, $conn);  
if (!$rs)
{
    echo mysql_error();
}
else
{
    echo 'success';
}

これで、エラーが何であったかを確認できます。

于 2012-09-05T15:20:29.180 に答える
1

single quotes二重引用符の代わりに使用します。

コードはSQLインジェクションの傾向があります。PDOまたはMYSQLIを使用する

PDO拡張機能の使用例:

<?php

    $stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)");
    $stmt->bindParam(1, $name);
    $stmt->bindParam(2, $value);

    // insert one row
    $name = 'one';
    $value = 1;
    $stmt->execute();

?>

これにより、一重引用符でレコードを挿入できます。

于 2012-09-05T15:18:12.080 に答える
1

これを試して:

$sql = "INSERT INTO companies (name, source_id, source_site, seeking_cf, currency, i_target, equity_offered, money_raised, num_investors, raised_pct, descr, city, state, country, categories_id, logo) VALUES (\"XYZ Widgets\", \"31\", 22, 1, \"£\", 250000, 0, 0, 0, 0, \"(Business Plan\", \"London\", \"\", \"UK\", 0, \"http://www.website.com/xyz.jpg\")";
  $rs = mysql_query($sql, $conn);  
  if(!$rs) { 
    $utoh = "fail"; 
  } else { 
    $utoh = "success";      
  }
  echo $utoh;
于 2012-09-05T15:20:29.953 に答える
0

やってみましたか?:

1:

  mysql_query("set names utf8;");
    before mysql_query($insert)?

2:

クエリ内で引用符を「by」に変更

于 2012-09-05T15:32:44.837 に答える