【问题标题】:Mysql inserts empty rowsMysql插入空行
【发布时间】:2017-01-04 14:32:00
【问题描述】:

我有一个要插入数据库的对象数组。
所以我用 for 循环循环所有对象。

我正在使用 ajax 发送 $offer$gameid
$offer 是包含 10 个项目的数组,$gameid 只是 integer

所有变量都有数据,因为它echo它们。

我正在使用 localhost 开发 xampp

include "../../inc/connect.php";

$offer = @$_POST['offer'];
$gameid = @$_POST['gameid'];

$query = $db->prepare("INSERT INTO items VALUES (id, gameid, assetid, name, icon, price, owner)");

for($i = 0; $i < count($offer) - 1; $i++) {
    $assetid = $offer[$i]['assetid'];
    $name = $offer[$i]['name'];
    $icon = $offer[$i]['icon'];
    $price = $offer[$i]['price'];

    $query_array = array('id' => '', 'gameid' => $gameid, 'assetid' => $assetid, 'name' => $name, 'icon' => $icon, 'price' => $price, 'owner' => $steamid);

    $query->execute($query_array);

echo "
<div class='item'>
    <div class='left'>
        <img src='$avatar' />
        <div class='names'>
            <p>$username</p>
            <p>$name</p>
        </div>
    </div>
    <div class='right'>
        <div class='price'>
            $" . $price . "
        </div>
        <div class='item-icon'>
            <img src='http://cdn.steamcommunity.com/economy/image/$icon' />
        </div>
    </div>
</div>  
";
}

连接

$user = "root";
$pass = "";

$db = new PDO('mysql:host=localhost;dbname=website', $user, $pass);

表格

$query-&gt;execute($query_array)时我得到什么

mysql_error.log 或 ajax 数据中没有错误

【问题讨论】:

  • 第一:我希望你没有使用 sql root 用户作为生产站点:(
  • 不用担心,我在服务器上传网站时会更改它
  • VALUES (id, gameid, assetid, name, icon, price, owner) - 这让你失望了; think 字符串文字。这个“ajax”在哪里?
  • 占位符前需要冒号。 VALUES (:id, :gameid, :assetid, :name, :icon, :price, :owner)。否则,它会将它们视为列名。
  • 谢谢。发表一个答案,我接受它

标签: php mysql sql ajax


【解决方案1】:

你的占位符上需要冒号,否则它会将值视为列名:

$query = $db->prepare("INSERT INTO items VALUES (:id, :gameid, :assetid, :name, :icon, :price, :owner)");

$query_array = array(':id' => '', ':gameid' => $gameid, ':assetid' => $assetid, ':name' => $name, ':icon' => $icon, ':price' => $price, ':owner' => $steamid);

【讨论】:

    【解决方案2】:

    问题在于您的查询。应该是这样的:

    $query = $db->prepare("INSERT INTO items 
        (id, gameid, assetid, name, icon, price, owner) 
        VALUES (:id, :gameid, :assetid, :name, :icon, :price, :owner)"
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-16
      • 2013-10-15
      • 1970-01-01
      • 1970-01-01
      • 2013-07-20
      • 2011-01-26
      • 1970-01-01
      相关资源
      最近更新 更多