已解决:我知道有些字段是空的应该已经抓住了支票,但它们是空的而不是NULL。所以,当我检查NULL字段时,它没有找到任何字段。
我正在尝试检查具有特定名称的行中的元素是否包含任何空白字段。我用它来查找是否有任何值为null,如果有,则更新和行为null。但它工作不正常。我相信我的所有列名都正确,但我看不出问题是什么。这是我的疑问:
//this goes through each row 1 by 1 and checks if an element is null
$stmt = $dbh->prepare("SELECT count(*) from csgo_item_list WHERE Item_Name =:itemname AND (Image_Link IS NULL OR Quantity IS NULL OR new_price IS NULL OR market_hash_name IS NULL OR last_update IS NULL OR is_tradable IS NULL OR old_price IS NULL OR item_type IS NULL OR skin_quality IS NULL OR skin_color IS NULL)");
//"$mydata->market_name" returns a valid name in the table
$stmt->bindValue(':itemname', $mydata->market_name);
$stmt->execute();
$count = $stmt->fetchColumn();
echo $count;
当我这样做时,有些行确实有一些空字段,但当我回显$count
时,它只返回0。这意味着我无法更新我的行,因为在检查之后我使用UPDATE
的相同行:
if($count != 0){
$sql = $dbh->prepare("UPDATE csgo_item_list SET Quantity=:quantity, new_price=:newprice, Image_Link=:image_link, market_hash_name=:markethashname, last_update='1000-01-01 00:00:00', is_tradable='no', old_price=:oldprice, item_type=:type, , skin_quality=:skinquality, skin_color=:skincolor WHERE Item_Name=:itemname AND (Image_Link IS NULL OR Quantity IS NULL OR new_price IS NULL OR market_hash_name IS NULL OR last_update IS NULL OR is_tradable IS NULL OR old_price IS NULL OR item_type IS NULL OR skin_quality IS NULL OR skin_color IS NULL)");
我将发布我的数据库表的图像,从我检查过的所有匹配的名称: http://gyazo.com/5ab3f2676c44eb696b02a38a64d9742a
任何人都可以看到为什么这不起作用?
答案 0 :(得分:1)
我知道有些字段应该是空的,应该已经检查了,但是它们是空的而不是NULL。因此,当我检查NULL字段时,它没有找到任何字段。
我必须做的是将所有空列设置为NULL:
UPDATE `table` SET `column` = NULL;
答案 1 :(得分:0)
" ....但是当我回显$ count时,它只返回0' s。这个mea ...."
if($count != 0){ ....
如果它返回所有' 0那么为什么你要比较"不等于"到0?
我认为应该是if ($count == O){
。