为什么我的php“if语句”不影响我的mysql查询?

时间:2016-04-21 00:24:03

标签: php mysql if-statement

首先,我知道mysql已被弃用。一旦我弄清楚手头的问题,我会立刻改成mysqli。即使未在'stripetoken'列中设置数据,我的查询仍会继续更新所有行。为什么会这样?

代码段:

$token_query = 'SELECT * FROM jobsubmission';
$token_res = mysql_query($token_query);
$token_row = mysql_fetch_array($token_res);


if(isset($token_row['stripetoken'])) {
    $updqry = 'UPDATE jobsubmission SET assigned=1 WHERE ID="'.$book_ids[$jcount].'"';
    $update = mysql_query($updqry);
    $bookdate = date("d-m-Y");

2 个答案:

答案 0 :(得分:3)

因为$token_row['stripetoken'] 总是设置,因为它是数据库中的一个列,因此它将在$token_row中可用。现在它是否具有值是一个不同的故事。你应该使用empty()代替(假设你不希望它对于虚假值是真的)。​​

if(!empty($token_row['stripetoken'])) {

答案 1 :(得分:0)

因此虽然@JohnConde说我需要在isset上使用空函数是绝对正确的,但我的解决方案已经在别处。以下是我设法使查询符合我的规范的方法:

  • 而不是搜索空,我将'stripetoken'列设为NULL 默认情况下。
  • 这允许我使用以下代码:

    $token_query = 'SELECT * FROM jobsubmission WHERE ID="'.$book_ids
    [$jcount].'" and stripetoken is not null';
    $token_res = mysql_query($token_query);
    $token_row = mysql_fetch_object($token_res);
    
    if(!$token_row->stripetoken == NULL) {