首先,我知道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");
答案 0 :(得分:3)
因为$token_row['stripetoken']
总是设置,因为它是数据库中的一个列,因此它将在$token_row
中可用。现在它是否具有值是一个不同的故事。你应该使用empty()
代替(假设你不希望它对于虚假值是真的)。
if(!empty($token_row['stripetoken'])) {
答案 1 :(得分:0)
因此虽然@JohnConde说我需要在isset上使用空函数是绝对正确的,但我的解决方案已经在别处。以下是我设法使查询符合我的规范的方法:
这允许我使用以下代码:
$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) {